in reply to Fork Windows

  1. Windows doesn't do signals!

    Perl emulates (badly) a very limited set of (just 4 trappable) signals under Win32. Any application that relies upon signals for IPC will fail to work reliably under Windows.

  2. Windows doesn't do fork.

    Perl emulates fork using threads under Win32. It uses USER space code, to emulate the COW sharing of memory via CLONING (wholesale copying) of data. The result is relatively slow and memory consuming.

Cygwin does a similar emulation of signals and fork but uses real processes for the latter. It still involves wholesale copying of memory to emulate COW, and the signals emulation whilst more complete is still an emulation; incomplete and far from transparently compatible.

I have to concur with tilly that you would be far better off separating the webserver from your application and using a lightweight dedicated HTTP server, rather than trying to roll your own cross-platform solution in Perl.

Something like TinyWEB or TinySSL is a 53k executable with a 2MB memory footprint, comes with source (albiet Delphi), and is surprisingly fast and robust non-forking (select loop driven) server that can handle Perl cgis.

There are lots of others, some platform-specific, some cross-platform. Writing & maintaining your own in Perl doesn't make sense.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."