ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
7.19. Opening and Closing File Descriptors by NumberProblemYou know which file descriptors you'd like to do I/O on, but Perl requires filehandles, not descriptor numbers. SolutionTo open the file descriptor, use the open(FH, "<&=$FDNUM"); # open FH to the descriptor itself open(FH, "<&$FDNUM"); # open FH to a copy of the descriptor use IO::Handle; $fh->fdopen($FDNUM, "r"); # open file descriptor 3 for reading To close one by number, either use the DiscussionOccasionally you have a file descriptor but no filehandle. Perl's I/O system uses filehandles instead of file descriptors, so you have to make a new filehandle for an already open file descriptor. The If you have version 5.004 or better installed, you can use the IO::Handle object method. This is the same as: use IO::Handle; $fh = IO::Handle->new(); $fh->fdopen(3, "r"); # open fd 3 for reading Closing a file descriptor by number is even rarer. The Here's how you'd open the file descriptors that the MH mail system feeds its child processes. It identifies them in the environment variable $fd = $ENV{MHCONTEXTFD}; open(MHCONTEXT, "<&=$fd") or die "couldn't fdopen $fd: $!"; # after processing close(MHCONTEXT) or die "couldn't close context file: $!"; If you want to close a descriptor by number, just See AlsoThe |