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.
In reply to Re^3: Passing a File Descriptor to a New Process on Windows (Win32API::File)
by hardburn
in thread Passing a File Descriptor to a New Process on Windows
by hardburn
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |