I am making a call to gpg on the command line, a couple of the parameters that gpg 
will accept are file descriptor numbers that it then writes to, and I would like to 
capture that output and then read from it.

I have successfully made it read directly from a file on the local file system like so:

my $pass_fh = IO::File->new('/path/to/localfile');
fcntl $pass_fh, F_SETFD, 0; # don't close over exec
my $pass_fd = $pass_fh->fileno(); # get the file descriptor number

and then calling gpg on the command line like so:

gpg [other options here, etc.] --passphrase-fd $pass_fd [etc.]

Which works very well. And I can successfully create a new file handle,

my $logger_fh = IO::Handle->new();

And then presumably could use the same methods as above, but the file handle has to be 
open to determine its number and then to pass the file descriptor to the command line. 
Which I determined is what fdopen is for, so now to my question(s) (finally, sorry 
about that) how do I determine what the FD (file descriptor number) should be that I 
pass to fdopen? Is this an arbitrary number (not 0,1,2), can I have the system suggest 
a number?  If the program were to choose the same number in different forks would it 
matter?  Is there a better more appropriate way of handling all of this?  (Besides 
using one of the GPG modules from CPAN, which I would absolutely love, but after 
spending a number of days checking them out, each one has one or more quirks which 
doesn't allow it to work in our app.)

Thanks for your help and happy new year!

http://danconia.org

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to