Wait a second here. Using system() (which is a function and not
a 'command'), you can execute arbitrary programs (not just 'DOS commands',
whatever you mean with that). However, these programs are always executed
in an intermediate shell, not directly, which on MS Windows causes this:
C89:
The system function passes the string pointed to by string to
the host environment to be executed by a command processor in an
implementation-defined manner.
There's nothing in there about being able to execute "arbitrary
programs"; nor is there anything in there about an "intermediate shell".
You get a "command processor" [at most -- there doesn't even have
to be that], and it does whatever it wants with the string.
This isn't just a theoretical limitation: the "command processor"
could be, for example, "rsh", the Restricted Bourne Shell, which
does NOT permit "arbitrary programs" to be executed (only built-in
commands and programs that can be found in the rsh PATH).