in reply to Re^5: What is the preferred cross-platform IPC module?
in thread What is the preferred cross-platform IPC module?
If perl used native file handles instead of MS CRT file handles, and make select Perl function map to WaitForMultipleObjects, then yes, http://msdn.microsoft.com/en-us/library/windows/desktop/aa365603%28v=vs.85%29.aspx. I think the reason why perl uses MS win32 select instead of WFMO was that 12-15 years ago when perl win32 was being developed, DOS Windows was the target platform. On DOS Windows, socket handles are not kernel/file handles, and can not be given to WFMO, on DOS Windows socket handles had to be given to WSAWaitForMultipleEvents. Sockets on DOS Windows were a 3rd party add on architecture wise and there used to be competitors to MS Sockets http://en.wikipedia.org/wiki/Winsock#Other_implementations.C Std Lib pulls it off.Really? Can you use select on an win32 pipe? Or stdin?
Windows NT is POSIX certified from day 1, 1993, although you are correct MS is removing it for Windows 8, and it was put in to Embrace, extend and extinguish. Even though the formal POSIX api is going away, nothing prevents you from writing a POSIX API layer on Windows. The Linux kernel isn't 100% POSIX compatible without its usermode libraries anyway, http://www.kernel.org/doc/man-pages/online/pages/man7/aio.7.html http://en.wikipedia.org/wiki/Native_POSIX_Thread_Library.Interix and Cygwin pull it off.That's like saying that a campervan pulls off being a house.
Cygwin was always a dog; and never got beyond POSIX 1 as far as I can tell.
Interix was deliberately ham-strung from the moment MS purchased it. They didnt want it to become a viable alternative development environment for windows. They offered and supported it only as a stop-gap to transitioning *nix software suits to the Windows Server environment. It will not ship with Windows 8.
Windows Alertable IO/APCs are an improved implementation of unix signals see http://books.google.com/books?id=xX5tfrAQQ8cC&lpg=RA1-PA79&vq=unix%20signal%20mechanism&dq=apc%20unix%20signal%20windows%20kernel&pg=PA188#v=snippet&q=unix%20signal%20mechanism&f=false and http://www.flounder.com/asynchexplorer.htm#Callback%20I/O.Signals on Windows are called Alertable IO. "That is so wrong it defies refutation beyond this link.
MS Alertable IO has exactly zero to do with "POSIX signals"!
"Safe" signals on Win32 Perl are Windows Messages on the message queue,Windows doesn't do POSIX signals.
Your absolutely wrong. If your claiming thats not true, then this wouldn't crash for you or anyone else "Free to wrong pool" error..non-safe signals (CRT Ctrl C and exit) usually will crash the perl interp since they actually run from another thread.That is about as far from the truth as it is possible to get.
Perl uses the SetConsoleCtrlHandler() function to allow it to handle the various console events.
Each of those is a wrapper around an APC or more often an Event Objects http://msdn.microsoft.com/en-us/library/windows/hardware/ff553350%28v=vs.85%29.aspx kernel wise.*nix IPC revolves around: a) fork & exec; b) signals; c) selectable, non-blocking IO; d) pipes; e) Unix domain sockets.
Windows has its own IPC mechanisms: a) Clipboard; b) COM; c) Data Copy; d) DDE; e) File Mapping; f) Mailslots; g) Pipes (Anon;Named;stream;message); h) RPC; i) Windows Sockets.
So what are Cygwin, WINE, KernelEx, and Reactos?Even where the names on the different platforms are superficially similar; the implementation details are sufficiently different to make writing a common interface necessarily a lowest-common-denominator-via-crude-incomplete-emulation exercise that benefits no one.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^7: What is the preferred cross-platform IPC module?
by BrowserUk (Patriarch) on May 15, 2012 at 10:38 UTC | |
|
Re^7: What is the preferred cross-platform IPC module?
by BrowserUk (Patriarch) on May 14, 2012 at 22:06 UTC |