source: branches/libc-0.6/doc/Fork.os2@ 2525

Last change on this file since 2525 was 1281, checked in by bird, 22 years ago

...

  • Property cvs2svn:cvs-rev set to 1.3
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 30.8 KB
Line 
1$Id: Fork.os2 1281 2004-03-06 21:48:26Z bird $
2
3Fork Design Draft
4--------------------
5
61.0 Intro
7----------
8
9blah.
10
11
121.1 The SuS fork() Description
13------------------------------
14
15NAME
16
17 fork - create a new process
18
19SYNOPSIS
20
21 #include <unistd.h>
22
23 pid_t fork(void);
24
25DESCRIPTION
26
27 The fork() function shall create a new process. The new process (child process) shall be an exact copy of the calling process (parent process) except as detailed below:
28
29 * The child process shall have a unique process ID.
30 * The child process ID also shall not match any active process
31 group ID.
32 * The child process shall have a different parent process ID,
33 which shall be the process ID of the calling process.
34 * The child process shall have its own copy of the parent's file
35 descriptors. Each of the child's file descriptors shall refer
36 to the same open file description with the corresponding file
37 descriptor of the parent.
38 * The child process shall have its own copy of the parent's open
39 directory streams. Each open directory stream in the child process
40 may share directory stream positioning with the corresponding
41 directory stream of the parent.
42 * [XSI] The child process shall have its own copy of the parent's
43 message catalog descriptors.
44 * The child process' values of tms_utime, tms_stime, tms_cutime, and
45 tms_cstime shall be set to 0.
46 * The time left until an alarm clock signal shall be reset to zero,
47 and the alarm, if any, shall be canceled; see alarm() .
48 * [XSI] All semadj values shall be cleared.
49 * File locks set by the parent process shall not be inherited by
50 the child process.
51 * The set of signals pending for the child process shall be
52 initialized to the empty set.
53 * [XSI] Interval timers shall be reset in the child process.
54 * [SEM] Any semaphores that are open in the parent process shall
55 also be open in the child process.
56 * [ML] The child process shall not inherit any address space memory
57 locks established by the parent process via calls to mlockall()
58 or mlock().
59 * [MF|SHM] Memory mappings created in the parent shall be retained
60 in the child process. MAP_PRIVATE mappings inherited from the
61 parent shall also be MAP_PRIVATE mappings in the child, and any
62 modifications to the data in these mappings made by the parent
63 prior to calling fork() shall be visible to the child. Any
64 modifications to the data in MAP_PRIVATE mappings made by the
65 parent after fork() returns shall be visible only to the parent.