208 lines
6.0 KiB
HTML
208 lines
6.0 KiB
HTML
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
|
<html>
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
|
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
|
||
|
<title>fork400()--Create a New Process With i5/OS PASE Options</title>
|
||
|
<!-- Begin Header Records -->
|
||
|
<!-- All rights reserved. Licensed Materials Property of IBM -->
|
||
|
<!-- US Government Users Restricted Rights -->
|
||
|
<!-- Use, duplication or disclosure restricted by -->
|
||
|
<!-- GSA ADP Schedule Contract with IBM Corp. -->
|
||
|
<!-- Change History: -->
|
||
|
<!-- YYMMDD USERID Change description -->
|
||
|
<!-- Created by wrmadden on 04 Apr 2003 --><!--End Header Records -->
|
||
|
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
|
||
|
</head>
|
||
|
<body>
|
||
|
<!-- Java sync-link -->
|
||
|
<script type="text/javascript" language="Javascript" src="../rzahg/synch.js">
|
||
|
</script>
|
||
|
|
||
|
<a name="Top_Of_Page"></a>
|
||
|
|
||
|
<h2>fork400()and f_fork400()--Create A New Process with i5/OS PASE Options</h2>
|
||
|
|
||
|
<div class="box" style="width: 70%;">
|
||
|
<br>
|
||
|
<br>
|
||
|
Syntax
|
||
|
|
||
|
<pre>
|
||
|
#include <as400_protos.h>
|
||
|
|
||
|
pid_t fork400(const char *<em>jobname</em>,
|
||
|
unsigned int <em>resourceID</em>);
|
||
|
|
||
|
pid_t f_fork400(const char *<em>jobname</em>,
|
||
|
unsigned int <em>resourceID</em>);
|
||
|
|
||
|
</pre>
|
||
|
|
||
|
<br>
|
||
|
Default Public Authority: *USE<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
Library: Standard C Library (libc.a)<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
Threadsafe: Yes<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
</div>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<p><strong>Note:</strong> These functions can only be used in an i5/OS PASE
|
||
|
program. See <a href="../rzalf/rzalfintro.htm">i5/OS PASE</a> for more
|
||
|
information about creating i5/OS PASE programs.</p>
|
||
|
|
||
|
<p>The <strong>fork400()</strong> function creates a new process.
|
||
|
The new process (the child process) is an almost exact copy of the
|
||
|
calling process (the parent process).
|
||
|
<strong>fork400()</strong>
|
||
|
is called once (by the parent process), but returns
|
||
|
twice (once in the parent process and once in the child process).
|
||
|
<strong>fork400()</strong> is the same as
|
||
|
the <strong>fork()</strong> function plus it allows additional i5/OS
|
||
|
PASE unique options to be specified.
|
||
|
</p>
|
||
|
<p><strong>f_fork400()</strong> function is a similarly enhanced
|
||
|
version of the <strong>f_fork()</strong> function.
|
||
|
When <strong>f_fork400()</strong> (or <strong>f_fork()</strong>)
|
||
|
is used, one of the <strong>exec</strong> functions must be
|
||
|
called in the child process immediately after
|
||
|
it is created.
|
||
|
<strong>f_fork400()</strong> does not call the fork handlers so
|
||
|
the application data, mutexes and the locks are all undefined
|
||
|
in the child process.
|
||
|
</p>
|
||
|
|
||
|
<br>
|
||
|
<h3>Parameters</h3>
|
||
|
|
||
|
<dl>
|
||
|
<dt><strong>jobname</strong></dt>
|
||
|
|
||
|
<dd>(Input)
|
||
|
Pointer to a null-terminated string in the i5/OS PASE CCSID that specifies the
|
||
|
i5/OS job name of the new process.
|
||
|
<p>The job name specified must begin with an alphabetic character [A-Z] or the characters [$#@].
|
||
|
The remaining characters must be alphanumeric [A-Z] or [0-9] or [$#@_.].
|
||
|
The string should not be longer than 10 characters (not including the terminating null character).
|
||
|
If the specified jobname is invalid, the jobname parameter value is ignored.
|
||
|
</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>resourceID</strong></dt>
|
||
|
|
||
|
<dd>(Input)
|
||
|
A positive integer value specifying the resources affinity identifier
|
||
|
for the new process.
|
||
|
<p>
|
||
|
Use the value of 0 to
|
||
|
let the operating system select the resources affinity identifier value automatically.
|
||
|
</p>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
<h3>Authorities</h3>
|
||
|
|
||
|
<p><strong>fork400()</strong> and <strong>f_fork400()</strong> require no authority.</p>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Return Value</h3>
|
||
|
|
||
|
<p>Upon successful completion, the <strong>fork400()</strong>
|
||
|
or <strong>f_fork400()</strong> function returns a value of 0
|
||
|
to the child process and the process ID of the child process
|
||
|
to the parent process. Otherwise, a value of -1 is returned
|
||
|
to the parent process, no child process is created,
|
||
|
and the errno global variable is set to indicate the error.
|
||
|
</p>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
<h3>Error Conditions</h3>
|
||
|
|
||
|
<p>At least these errno values can be returned, with other values also possible
|
||
|
(such as i5/OS-unique ILE errno EAPAR):</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="25 75" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>[EAGAIN]</em></td>
|
||
|
<td align="left" valign="top">Exceeds the limit on the total number of processes
|
||
|
running or the system does not have the resources necessary to create
|
||
|
another process.
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>[ENOMEM]</em></td>
|
||
|
<td align="left" valign="top">Not enough space exists for this process.
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>[EINVAL]</em></td>
|
||
|
<td align="left" valign="top">An invalid argument value was specified.
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
<h3>Usage Notes</h3>
|
||
|
|
||
|
<ol>
|
||
|
<li>Consult the AIX documentation for <strong>fork()</strong>
|
||
|
and <strong>f_fork()</strong> for additional details regarding
|
||
|
attributes of the parent process inherited by the
|
||
|
child process and differences between <strong>fork()</strong> and <strong>f_fork()</strong>.
|
||
|
<br>
|
||
|
</li>
|
||
|
<li>The i5/OS PASE environment specification <em>QIBM_PASE_USE_PRESTART_JOBS=Y</em>
|
||
|
will be ignored when the fork400() or f_fork400() functions are used with a non-null jobname
|
||
|
or a non-zero resourceID value.
|
||
|
</li>
|
||
|
|
||
|
</ol>
|
||
|
|
||
|
<br>
|
||
|
<h3>Related Information</h3>
|
||
|
|
||
|
<ul>
|
||
|
<li>See the <a href="pase_environ.htm">i5/OS PASE Environment Variables</a>
|
||
|
documentation for information about the <em>PASE_FORK_JOBNAME</em>
|
||
|
environment variable that can be used to specify the
|
||
|
i5/OS job name for new processes created using
|
||
|
the <strong>fork()</strong> or <strong>f_fork()</strong> functions.
|
||
|
</li>
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
<p></p>
|
||
|
|
||
|
<hr>
|
||
|
API introduced: V5R3
|
||
|
|
||
|
<hr>
|
||
|
<center>
|
||
|
<table cellpadding="2" cellspacing="2">
|
||
|
<tr align="center">
|
||
|
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href=
|
||
|
"pase1.htm">i5/OS PASE APIs</a> | <a href="aplist.htm">APIs by category</a>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</center>
|
||
|
</body>
|
||
|
</html>
|
||
|
|