in reply to Re^2: Passing a File Descriptor to a New Process on Windows (Win32API::File)
in thread Passing a File Descriptor to a New Process on Windows
Thanks, tye, have this all figured out now.
fd_pass.pl
#!/usr/bin/perl use v5.14; use warnings; use Win32API::File 'FdGetOsFHandle'; my $FILE = shift or die "Need file to read\n"; say "Opening file"; open( my $in, '<', $FILE ) or die "Can't open '$FILE': $!\n"; # Get the real FD from Windows my $fd = FdGetOsFHandle( fileno($in) ); say "Spawning child process"; my $pid = system(1, 'perl', './fd_get.pl', $fd ) or die "Could not spawn child process: $!\n"; wait;
fd_get.pl
#!/usr/bin/perl use v5.14; use warnings; use Win32API::File 'OsFHandleOpen'; my $FD = shift or die "Need file descriptor\n"; OsFHandleOpen( *IN, $FD, 'r' ) or die "Could not open file descriptor '$FD': $!\n"; while(<IN>) { chomp; say "Got in child: $_"; } close IN;
"There is no shame in being self-taught, only in not trying to learn in the first place." -- Atrus, Myst: The Book of D'ni.
|
---|