Process.h explained

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 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.[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

NameDescriptionNotes
[[exec (operating system)|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
[[exec (operating system)|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
[[spawn (computing)|spawnl, spawnle, spawnlp, spawnlpe]]load and execute a new child process. Parameters are passed individually.DOS,Win,OS/2
[[spawn (computing)|spawnv, spawnve, spawnvp, spawnvpe]]load and execute a new child process. Parameters are passed as an array of pointers.DOS,Win,OS/2
[[beginthread|beginthread, beginthreadNT]]creates a new thread of execution within the current process.Win,OS/2
[[endthread|endthread]]terminates a thread created by beginthread.Win,OS/2
[[getpid|getpid]]returns the process identifier.DOS,Win,OS/2
[[cexit|cexit]]restore interrupt vectors altered by the startup code.DOS,Win,OS/2

Constants

NameDescriptionNotesOS
_P_WAITSuspends parent process until the child process has finished executing.synchronous spawn.MS-DOS,Win32,OS/2
_P_NOWAIT, _P_NOWAITOContinues to execute calling process concurrently with new process.asynchronous spawn.Win32,OS/2
_P_OVERLAYOverlays parent process with child, which destroys the parent.has the same effect as the exec* functions.MS-DOS,Win32,OS/2
_P_DETACHThe 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_CHILDused as cwait action.Obsolete on Win32.MS-DOS,OS/2
_WAIT_GRANDCHILDused 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.

Differences

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

References

  1. "Copyright 1985–1989, Microsoft Corporation", in QuickC version 2.00 process.h file
  2. 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?
  3. http://www.delorie.com/djgpp/ Delorie.com
  4. http://www.delorie.com/djgpp/doc/incs/process.h DJGPP process.h
  5. http://www.openwatcom.org/index.php/Main_Page Openwatcom.org
  6. http://www.openwatcom.org/ftp/manuals/clib.pdf OpenWatcom clib
  7. http://www.digitalmars.com/ DigitalMars.com
  8. http://www.digitalmars.com/rtl/process.html Digital Mars process.h
  9. http://www.mingw.org/ MinGW.org
  10. Web site: MSDN.Microsoft.com . 2007-01-15 . https://web.archive.org/web/20070707082306/http://msdn.microsoft.com/vstudio/express/visualc/default.aspx . 2007-07-07 . dead .
  11. Web site: Borland.com . 2007-01-15 . https://web.archive.org/web/20121105211827/http://www.borland.com/ . 2012-11-05 . dead .
  12. http://dn.codegear.com/article/20841Turbo C version 2.01
  13. http://www.cs.virginia.edu/~lcc-win32/ CS.Virginia.edu
  14. http://www.qnx.com/products/neutrino_rtos/ QNX.com
  15. http://www.delorie.com/djgpp/doc/libc/libc_736.html DJGPP spawn*
  16. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_crt_system.2c_._wsystem.asp Microsoft MSDN

External links