Process.h

C header file

process.h is the 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 most of the functions are defined by either the ANSI/ISO C standard or by POSIX.

## History

[edit]

Microsoft's version of the file dates back to at least 1985, according to its copyright statement.[1] An early reference to the file was in a post on the net.micro.pc usenet on Oct-26-1986.[2] 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. Borland provided the header in their Turbo C compiler version 2.01. The C Ware-Personal C compiler version 1.2c (June 1989) had only the ANSI headers.

## Functions

[edit]

Name | Description | Notes

|
|

`execl, execle, execlp, execlpe` | load and 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 `beginthread`. | Win, OS/2
`getpid` | returns the process identifier. | DOS, Win, OS/2
`cexit` | restore interrupt vectors altered by the startup code. | DOS, Win, OS/2

## Constants

[edit]

Name | Description | Notes | OS

|
|
|

`_P_WAIT` | Suspends parent process until the child process has finished executing. | synchronous spawn. | MS-DOS, Win32, OS/2
`_P_NOWAIT, _P_NOWAITO` | Continues to execute calling process concurrently with new process. | asynchronous spawn. | Win32, OS/2
`_P_OVERLAY` | Overlays parent process with child, which destroys the parent. | has the same effect as the `exec*` functions. | MS-DOS, Win32, OS/2
`_P_DETACH` | The child is run in background without access to the console or keyboard. | Calls to `_cwait` upon the new process will fail. Asynchronous spawn. | Win32, OS/2
`_WAIT_CHILD` | used as `cwait` action. | Obsolete on Win32. | MS-DOS, OS/2
`_WAIT_GRANDCHILD` | used as `cwait` action. | Obsolete on Win32. | MS-DOS, OS/2

## Implementations

[edit]

Given the fact there is no standard on which to base the implementation, the functions declared by process.h differ, depending on the compiler in use. Below is a list of compilers which provide process.h.

* DJGPP[3][4]
* OpenWatcom,[5][6]
* Digital Mars[7][8]
* MinGW[9]
* Microsoft Visual C++[10]
* Borland Turbo C, 2.0 and later[11][12]
* Lcc32[13]
* QNX Neutrino QCC 6.x[14]

## Differences

[edit]

Another aspect that might vary is the combined length of exec* and spawn* parameters.

* Delorie DJGPP: does not have such a limit.[15]
* 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.[16]

## References

[edit]

1. ^ "Copyright 1985–1989, Microsoft Corporation", in QuickC version 2.00 process.h file
2. ^ Is my floppy diskette formated?[permanent dead link], groups-beta.google.com
3. ^ Delorie.com
4. ^ DJGPP process.h, delorie.com
5. ^ Openwatcom.org Archived 2015-03-17 at the Wayback Machine
6. ^ OpenWatcom clib Archived 2006-10-11 at the Wayback Machine, openwatcom.org
7. ^ DigitalMars.com
8. ^ Digital Mars process.h, digitalmars.com
9. ^ MinGW.org
10. ^ "MSDN.Microsoft.com". Archived from the original on 2007-07-07. Retrieved 2007-01-15.
11. ^ "Borland.com". Archived from the original on 2012-11-05. Retrieved 2007-01-15.
12. ^ C version 2.01, dn.codegear.com
13. ^ CS.Virginia.edu
14. ^ QNX.com
15. ^ DJGPP spawn*, delorie.com
16. ^ Microsoft MSDN, msdn.microsoft.com

## External links

[edit]

* Digital Mars _exec reference