#!/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.
|