Jump to content

C Programming/MS Windows Reference/process.h

From Wikibooks, open books for an open world

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.[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. 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]
Name Description Notes
exec (operating system)|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
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

Member constants

[edit | edit source]
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 | 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.

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.[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 | edit source]
  1. "Copyright 1985–1989, Microsoft Corporation", in QuickC version 2.00 process.h file
  2. Is my floppy diskette formated?, groups-beta.google.com
  3. Delorie.com
  4. DJGPP process.h, delorie.com
  5. Openwatcom.org
  6. OpenWatcom clib, openwatcom.org
  7. DigitalMars.com
  8. Digital Mars process.h, digitalmars.com
  9. MinGW.org
  10. MSDN.Microsoft.com
  11. Borland.com
  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
[edit | edit source]