Re: Okay so you do not compile perl :(

C Matthew Curtin (
Thu, 24 Apr 1997 08:26:29 -0400 (EDT)

>>>>> "Matt" == C Matthew Curtin <> writes:

Karl> NT does not have the equivalent of the Unix fork() command.

Matt> Isn't it supposed to be POSIX compliant? Or is NT's POSIX
Matt> "support" just as broken and useless as it was in 1993?

I hate to follow up to myself, but I poked around a little, and it
seems that the answer to my question is "Yes, it's still braindead." has a section on POSIX "support" in
NT. Apparantly, you've got some hoops and circles to jump through in
order to make it work AT ALL, but this is the best, doing so means you
can't access _networking_ among other things. And, of course, you
have to PAY EXTRA for this broken bit of software. Jeez, I hate
Microsoft. And while I'm at it, let me just reiterate my vow to
remain free of the trap of Microsoft software.

Lemmie quote a few paragraphs...

---------------------------- begin quote -----------------------------
Where can I get Microsoft's POSIX subsystem for NT?

NT has a built-in protected subsystem for POSIX. It starts
automatically when a POSIX application loads and stays active until
shutdown. The process name is psxss.

Microsoft provides a series of POSIX utilities, including source code,
in the Resource Kit. Some of the included utilities are: ar, cat,
chmod, vi, ls, mv, rm, and sh.

The Resource Kit can be purchased from Microsoft, or Software Spectrum
(US 800-824-3323, Canada 800-624-6224).

You can also download the utilities for free.

The Reskit is not enough to develop POSIX applications - you really
need the SDK from, again, MSDN Level 2.

What are the restrictions of NT's POSIX?

The POSIX subsystem that is supplied by Microsoft with NT has several
important limitations.

To quote the Resource Kit:

With this release of Windows NT, POSIX applications have no
direct access to any of the facilities and features of the Win32
subsystem, such as memory mapped files, networking, graphics, or
dynamic data exchange.

That one sentence says a lot! No networking means no Winsock or any
other communication protocol. No graphics means that you restricted to
only console-based (Command Window) applications. No memory mapped
files restricts one of the methods of communicating between processes
under NT. Simply stated, applications using the POSIX subsystem of NT
can't do a whole lot. To do anything interesting, you need to access
Microsoft's Win32 API, or at least wrap a series of Unix-like calls
around the Win32 API.

Why is the POSIX subsystem so brain-damaged?

The general consensus is that Microsoft put in the POSIX subsystem in
order to bid NT on U.S. government contracts where POSIX can be a
requirement. The NT implementation is a strict implementation of the
POSIX.1 standard and nothing more. So, the subsystem isn't so much as
brain-damaged, but severely handicapped by not adding anything beyond
the specification.

The unfortunate result for those wishing to port UNIX applications, is
that unless the application needs no more system resources than cat,
the POSIX subsystem is useless. In fact, attempting to port to the
POSIX subsystem will probably be a complete waste of time as any one
of several brick walls will be hit very quickly. The alternative is to
start with the Win32 API and one of several porting aids listed in the
next section.
-------------------------------- end ---------------------------------

Matt Curtin  Chief Scientist  Megasoft, Inc.    I speak only for myself
Death to small keys.  Crack DES NOW!