12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <html>
- <head>
- <title>fork</title>
- <body bgcolor=#ffffff>
- <h2 align=center>fork</h2>
- <h4 align=center>OS/161 Reference Manual</h4>
- <h3>Name</h3>
- fork - copy the current process
- <h3>Library</h3>
- Standard C Library (libc, -lc)
- <h3>Synopsis</h3>
- #include <unistd.h><br>
- <br>
- pid_t<br>
- fork(void);
- <h3>Description</h3>
- fork duplicates the currently running process. The two copies are
- identical, except that one (the "new" one, or "child"), has a new,
- unique process id, and in the other (the "parent") the process id is
- unchanged.
- <p>
- The process id must be greater than 0.
- <p>
- The two processes do not share memory or open file tables; this state
- is copied into the new process, and subsequent modification in one
- process does not affect the other.
- <p>
- However, the file handle objects the file tables point to are shared,
- so, for instance, calls to lseek in one process can affect the other.
- <p>
- <h3>Return Values</h3>
- On success, fork returns twice, once in the parent process and once in
- the child process. In the child process, 0 is returned. In the parent
- process, the process id of the new child process is returned.
- <p>
- On error, no new process is created, fork only returns once, returning
- -1, and <A HREF=errno.html>errno</A> is set according to the error
- encountered.
- <h3>Errors</h3>
- The following error codes should be returned under the conditions
- given. Other error codes may be returned for other errors not
- mentioned here.
- <blockquote><table width=90%>
- <tr><td width=10%> </td><td> </td></tr>
- <tr><td>EMPROC</td> <td>The current user already has too
- many processes.</td></tr>
- <tr><td>ENPROC</td> <td>There are already too many
- processes on the system.</td></tr>
- <tr><td>ENOMEM</td> <td>Sufficient virtual memory for the new
- process was not available.</td></tr>
- </table></blockquote>
- </body>
- </html>
|