Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Windows 10 and Win32::Process

by Alphaphi (Acolyte)
on Jun 27, 2018 at 09:40 UTC ( [id://1217494]=perlquestion: print w/replies, xml ) Need Help??

Alphaphi has asked for the wisdom of the Perl Monks concerning the following question:

Greetings Monks, I need to write a piece of code that needs to run several Windows commands in parallel. Under Linux I did the same using fork(), and all runs fine. But as fork does not exist under Windows, I am thinking of using the Win32::Process module. What I would like to ask is whether this module is my first choice to do things under Windows 10, or whether there are other modules I should take into consideration for this. What makes me suspicious is that the version number is still 0.16, and the date provided on the CPAN page is Dec 2013. Looks a bit old for me. Would appreciate some hints. Thanks

Replies are listed 'Best First'.
Re: Windows 10 and Win32::Process
by dasgar (Priest) on Jun 27, 2018 at 13:37 UTC
    But as fork does not exist under Windows...

    Actually, you can use fork in Windows. However, Perl will emulate fork by using threads (see this note in perlport).

    When I first was looking into doing things in parallel, I looked at fork and threads. I couldn't get my head wrapped around how to use fork, but I was understanding threads so I started using threads. Later I learned that on Windows, Perl uses threads to emulate fork so I stayed with threads.

    I haven't had any issues using threads, but you do need to keep in mind that not all modules are thread safe. If you do use threads and want to use a worker threads model to limit the number of threads being used, you'll find Thread::Queue to be useful and probably threads::shared as well.

    Another alternative you could consider is MCE, which I have not used. The module's author has helped folks here on PerlMonks with issues in using/learning MCE.

    I am thinking of using the Win32::Process module...What makes me suspicious is that the version number is still 0.16...

    A module that hasn't been updated in a long time does not necessarily mean that it has been neglected. Sometimes a module's author will reach a stage where he/she feels that the module is "complete" and not in need of updating. Although I have not used Win32::Process myself, I have seen some posts where folks are using/suggesting the module, so I wouldn't write off the use of that module just because it hasn't been updated in a while.

      A module that hasn't been updated in a long time does not necessarily mean that it has been neglected...

      +1 for your answers and I absolutely agree with this reasoning. I just wish to note that unfortunately the last two times that I used Win32 to do something both functions were not working properly. It makes me careful using that module. Functions that did not work for me where killing a process and using the millisecond sleep.

        ... the last two times that I used Win32 to do something both functions were not working properly. ... Functions that did not work for me [were] ...

        Just to be clear, do I understand correctly that we're talking about some functions in the Win32::Process module?


        Give a man a fish:  <%-{-{-{-<

Re: Windows 10 and Win32::Process
by Lotus1 (Vicar) on Jun 27, 2018 at 14:26 UTC
Re: Windows 10 and Win32::Process
by Marshall (Canon) on Jun 27, 2018 at 18:09 UTC
    Its been years since I looked at a similar issue, but perhaps another idea for you would be to launch the external command with open() and then use async I/O to read the file handle, perhaps with sysread()? If you use normal buffered synchronous I/O the file handle will "block". Just and idea that might be worth considering. I've done async I/O with Perl before, but its been years ago and I am hazy on the details, but I remember that it worked.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1217494]
Approved by kcott
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (4)
As of 2024-04-19 14:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found