Process.h
From Wikipedia, the free encyclopedia
process.h is a C header file which contains function declarations and macros used in working with threads and processes. Neither the header file nor the functions are defined by either the ANSI/ISO C standard or by POSIX. 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.
Contents |
[edit] History
The first reference to the file was in a post on the net.micro.pc usenet and dates back to Oct-26-1986[1] . The compiler used by the user 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.
[edit] Member functions
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 |
[edit] Member constants
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 |
[edit] Implementations
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 [2]
- OpenWatcom [3]
- Digital Mars [4]
- Mingw
- Microsoft Visual C++
- Borland Turbo C, 2.0 and later[5]
- Lcc32
[edit] Differences
Another aspect that might vary is the combined length of exec* and spawn* parameters.
- Delorie DJGPP : does not have such a limit.[6]
- 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.[7]
[edit] References
- ^ First reference to process.h
- ^ DJGPP process.h
- ^ OpenWatcom clib
- ^ Digital Mars process.h
- ^ Turbo C version 2.01
- ^ DJGPP spawn*
- ^ Microsoft MSDN