For the sake of clarity, IO::FDPass doesn't implement letting a child process inherit an open file descriptor. It implements passing an open file descriptor through a Unix-domain socket (and similar functionality on Windows).

It also doesn't work with cygwin Perl.

To pass an open file descriptor to a child process in Windows Perl you actually have to pass an open low-level Windows file handle to the child and you have to create the child with something other than fork.

The core module Win32API::File includes the required functionality for looking up the low-level handle so you can inform the child where to find it and for opening a Perl file handle so you can read from and/or write to it.

There are several ways to spawn the child process, including: Win32::Process::Create(), system(1,...) (see perlport), system("start ...").

Unfortunately, although I've done this successfully before and have helped others do it at PerlMonks, none of us has actually posted working examples of this as far as I can tell.

But it wasn't particularly hard. You do the steps the same as on Unix except:

- tye        


In reply to Re^2: Passing a File Descriptor to a New Process on Windows (Win32API::File) by tye
in thread Passing a File Descriptor to a New Process on Windows by hardburn

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.