C Programming/MS Windows Reference/process.h
process.h is a C header file which contains function declarations and macros used in working with threads and processes. Most C compilers that target DOS, Windows 3.1x, Win32, OS/2, Novell NetWare or DOS extenders supply this header and the library functions in their C library. Neither the header file nor the functions are defined by either the ANSI C|ANSI/ISO C standard or by POSIX.
History[edit | edit source]
Microsoft’s version of the file dates back to at least 1985, according to its copyright statement. An early reference to the file was in a post on the net.micro.pc usenet on Oct-26-1986. The compiler used was Microsoft C compiler version 3.0. The Lattice C compiler version 3.30 (Aug-24-1988) did not have such a header file, but offered similar functions. As of Borland, they provided it in their Turbo C compiler version 2.01. The C Ware-Personal C compiler version 1.2c (June 1989) had only the ANSI headers.
Member functions[edit | edit source]
|execl, execle, execlp, execlpe||execute a new child process by placing it in memory previously occupied by the parent process. Parameters are passed individually.||DOS,Win,OS/2,POSIX|
|execv, execve, execvp, execvpe||load and execute a new child process by placing it in memory previously occupied by the parent process. Parameters are passed as an array of pointers.||DOS,Win,OS/2,POSIX|
|spawnl, spawnle, spawnlp, spawnlpe||load and execute a new child process. Parameters are passed individually.||DOS,Win,OS/2|
|spawnv, spawnve, spawnvp, spawnvpe||load and execute a new child process. Parameters are passed as an array of pointers.||DOS,Win,OS/2|
|beginthread, beginthreadNT||creates a new thread of execution within the current process.||Win,OS/2|
|endthread||terminates a thread created by
|getpid||returns the process identifier.||DOS,Win,OS/2|
|cexit||restore interrupt vectors altered by the startup code.||DOS,Win,OS/2|
Member constants[edit | edit source]
||Suspends parent process until the child process has finished executing.||synchronous spawn.||MS-DOS,Win32,OS/2|
||Continues to execute calling process concurrently with new process.||asynchronous spawn.||Win32,OS/2|
||Overlays parent process with child, which destroys the parent.||has the same effect as the
||The child is run in background without access to the console or keyboard.||Calls to
||Obsolete on Win32.||MS-DOS,OS/2|
||Obsolete on Win32.||MS-DOS,OS/2|
Implementations[edit | edit source]
Given the fact that there is no standard on which to base the implementation, the functions declared by process.h differs, depending on which compiler you use. Below is a list of compilers which provide process.h.
- DJGPP 
- Digital Mars
- Microsoft Visual C++
- Borland Turbo C, 2.0 and later
- QNX Neutrino QCC 6.x
Differences[edit | edit source]
Another aspect that might vary is the combined length of exec* and spawn* parameters.
- Delorie DJGPP: does not have such a limit.
- Digital Mars: the maximum is 128 bytes; nothing is stated about the ending '\0' character.
- Microsoft cl: the argument list for the new process must not exceed 1024 bytes.
References[edit | edit source]
- "Copyright 1985–1989, Microsoft Corporation", in QuickC version 2.00 process.h file
- Is my floppy diskette formated?, groups-beta.google.com
- DJGPP process.h, delorie.com
- OpenWatcom clib, openwatcom.org
- Digital Mars process.h, digitalmars.com
- C version 2.01, dn.codegear.com
- DJGPP spawn*, delorie.com
- Microsoft MSDN, msdn.microsoft.com