How does system(1,"foo") work on Windows?
Windows has no fork(). Various languages have implemented threads on Windows with varying degrees of success.
But Perl is the only language I've come across that has anything like system(1,"blah") that returns control to the calling Perl script on Windows. It doesn't seem like it would be possible, but it works flawlessly as far as I can tell.
I find myself writing and running scripts in a number of languages, but whenever I need a controller for more than one script, regardless of language, I turn to Perl because of system(1,"xyz").
When people ask me how it works, though, I have to just say "magic". I've recently started using it again in some controller scripts, and now I feel like I should find out what's really going on.
So -- how does system(1,"foo") work on Windows?
Re: How does system(1,"foo") work on Windows?
perlfork
Re^2: How does system(1,"foo") work on Windows?
Fascinating:
Support for concurrent interpreters and the fork() emulation was implemented by ActiveState, with funding from Microsoft Corporation.
-sam
Re: How does system(1,"foo") work on Windows?
Didn't you answer this already? magic!
Re: How does system(1,"foo") work on Windows?
But Perl is the only language I've come across that has anything like system(1,"blah") that returns control to the calling Perl script on Windows.
The system call [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp|CreateProcess] can achieve this. CreateProcess can be called from C, C++, Perl and surely many other languages.
Re: How does system(1,"foo") work on Windows?
So -- how does system(1,"foo") work on Windows?
It just calls CreateProcess with the CREATE_NEW_PROCESS_GROUP flag bit set. See Win32::Process for the details.
It's a bit more complicated as it has to arrange for wait and waitpid to work.
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.