process.h
{{Short description|C header file}}
{{Lowercase title}}
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
Microsoft's version of the file dates back to at least 1985, according to its copyright statement."Copyright 1985–1989, Microsoft Corporation", in QuickC version 2.00 process.h file An early reference to the file was in a post on the net.micro.pc usenet on Oct-26-1986.[http://groups-beta.google.com/group/net.micro.pc/browse_frm/thread/b85ef1946a4915e6/1154bb52be4d5854?lnk=st&q=%22process%5C.h%22&rnum=23#1154bb52be4d5854 Is my floppy diskette formated?]{{Dead link|date=November 2024 |bot=InternetArchiveBot |fix-attempted=yes }}, groups-beta.google.com 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
class="wikitable" | ||
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
class="wikitable" | |||
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
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[http://www.delorie.com/djgpp/ Delorie.com][http://www.delorie.com/djgpp/doc/incs/process.h DJGPP process.h], delorie.com
- OpenWatcom,[http://www.openwatcom.org/index.php/Main_Page Openwatcom.org] {{webarchive|url=https://web.archive.org/web/20150317091931/http://www.openwatcom.org/index.php/Main_Page |date=2015-03-17 }}[http://www.openwatcom.org/ftp/manuals/clib.pdf OpenWatcom clib] {{Webarchive|url=https://web.archive.org/web/20061011042009/http://www.openwatcom.org/ftp/manuals/clib.pdf |date=2006-10-11 }}, openwatcom.org
- Digital Mars[http://www.digitalmars.com/ DigitalMars.com][http://www.digitalmars.com/rtl/process.html Digital Mars process.h], digitalmars.com
- MinGW[http://www.mingw.org/ MinGW.org]
- Microsoft Visual C++{{Cite web |url=http://msdn.microsoft.com/vstudio/express/visualc/default.aspx |title=MSDN.Microsoft.com |access-date=2007-01-15 |archive-url=https://web.archive.org/web/20070707082306/http://msdn.microsoft.com/vstudio/express/visualc/default.aspx |archive-date=2007-07-07 |url-status=dead }}
- Borland Turbo C, 2.0 and later{{Cite web |url=http://www.borland.com/ |title=Borland.com |access-date=2007-01-15 |archive-url=https://web.archive.org/web/20121105211827/http://www.borland.com/ |archive-date=2012-11-05 |url-status=dead }}[https://archive.today/20110710191522/http://dn.codegear.com/article/20841Turbo C version 2.01], dn.codegear.com
- Lcc32[http://www.cs.virginia.edu/~lcc-win32/ CS.Virginia.edu]
- QNX Neutrino QCC 6.x[http://www.qnx.com/products/neutrino_rtos/ QNX.com]
Differences
Another aspect that might vary is the combined length of exec* and spawn* parameters.
- Delorie DJGPP: does not have such a limit.[http://www.delorie.com/djgpp/doc/libc/libc_736.html DJGPP spawn*], delorie.com
- 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.[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_crt_system.2c_._wsystem.asp Microsoft MSDN], msdn.microsoft.com
References
{{Reflist}}
External links
- [http://www.digitalmars.com/rtl/process.html#_exec Digital Mars _exec reference]