rtems-docs/posix_users/process_creation_and_execution.rst
2016-05-02 20:51:23 -04:00

375 lines
6.0 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Process Creation and Execution Manager
######################################
Introduction
============
The process creation and execution manager provides the
functionality associated with the creation and termination
of processes.
The directives provided by the process creation and execution manager are:
- ``fork`` - Create a Process
- ``execl`` - Execute a File
- ``execv`` - Execute a File
- ``execle`` - Execute a File
- ``execve`` - Execute a File
- ``execlp`` - Execute a File
- ``execvp`` - Execute a File
- ``pthread_atfork`` - Register Fork Handlers
- ``wait`` - Wait for Process Termination
- ``waitpid`` - Wait for Process Termination
- ``_exit`` - Terminate a Process
Background
==========
POSIX process functionality can not be completely
supported by RTEMS. This is because RTEMS provides no memory
protection and implements a *single process, multi-threaded
execution model*. In this light, RTEMS provides none of the
routines that are associated with the creation of new processes.
However, since the entire RTEMS application (e.g. executable)
is logically a single POSIX process, RTEMS is able to provide
implementations of many operations on processes. The rule of
thumb is that those routines provide a meaningful result.
For example, ``getpid()`` returns the node number.
Operations
==========
The only functionality method defined by this manager which is
supported by RTEMS is the ``_exit`` service. The
implementation of ``_exit`` shuts the application down and
is equivalent to invoking either ``exit`` or``rtems_shutdown_executive``.
Directives
==========
This section details the process creation and execution managers directives.
A subsection is dedicated to each of this managers directives
and describes the calling sequence, related constants, usage,
and status codes.
fork - Create a Process
-----------------------
.. index:: fork
.. index:: create a process
**CALLING SEQUENCE:**
.. code:: c
#include <sys/types.h>
int fork( void );
**STATUS CODES:**
*ENOSYS*
This routine is not supported by RTEMS.
**DESCRIPTION:**
This routine is not supported by RTEMS.
**NOTES:**
NONE
execl - Execute a File
----------------------
.. index:: execl
.. index:: execute a file
**CALLING SEQUENCE:**
.. code:: c
int execl(
const char \*path,
const char \*arg,
...
);
**STATUS CODES:**
*ENOSYS*
This routine is not supported by RTEMS.
**DESCRIPTION:**
This routine is not supported by RTEMS.
**NOTES:**
NONE
execv - Execute a File
----------------------
.. index:: execv
.. index:: execute a file
**CALLING SEQUENCE:**
.. code:: c
int execv(
const char \*path,
char const \*argv[],
...
);
**STATUS CODES:**
*ENOSYS*
This routine is not supported by RTEMS.
**DESCRIPTION:**
This routine is not supported by RTEMS.
**NOTES:**
NONE
execle - Execute a File
-----------------------
.. index:: execle
.. index:: execute a file
**CALLING SEQUENCE:**
.. code:: c
int execle(
const char \*path,
const char \*arg,
...
);
**STATUS CODES:**
*ENOSYS*
This routine is not supported by RTEMS.
**DESCRIPTION:**
This routine is not supported by RTEMS.
**NOTES:**
NONE
execve - Execute a File
-----------------------
.. index:: execve
.. index:: execute a file
**CALLING SEQUENCE:**
.. code:: c
int execve(
const char \*path,
char \*const argv[],
char \*const envp[]
);
**STATUS CODES:**
*ENOSYS*
This routine is not supported by RTEMS.
**DESCRIPTION:**
This routine is not supported by RTEMS.
**NOTES:**
NONE
execlp - Execute a File
-----------------------
.. index:: execlp
.. index:: execute a file
**CALLING SEQUENCE:**
.. code:: c
int execlp(
const char \*file,
const char \*arg,
...
);
**STATUS CODES:**
*ENOSYS*
This routine is not supported by RTEMS.
**DESCRIPTION:**
This routine is not supported by RTEMS.
**NOTES:**
NONE
execvp - Execute a File
-----------------------
.. index:: execvp
.. index:: execute a file
**CALLING SEQUENCE:**
.. code:: c
int execvp(
const char \*file,
char \*const argv[]
...
);
**STATUS CODES:**
*ENOSYS*
This routine is not supported by RTEMS.
**DESCRIPTION:**
This routine is not supported by RTEMS.
**NOTES:**
NONE
pthread_atfork - Register Fork Handlers
---------------------------------------
.. index:: pthread_atfork
.. index:: register fork handlers
**CALLING SEQUENCE:**
.. code:: c
#include <sys/types.h>
int pthread_atfork(
void (\*prepare)(void),
void (\*parent)(void),
void (\*child)(void)
);
**STATUS CODES:**
*ENOSYS*
This routine is not supported by RTEMS.
**DESCRIPTION:**
This routine is not supported by RTEMS.
**NOTES:**
NONE
wait - Wait for Process Termination
-----------------------------------
.. index:: wait
.. index:: wait for process termination
**CALLING SEQUENCE:**
.. code:: c
#include <sys/types.h>
#include <sys/wait.h>
int wait(
int \*stat_loc
);
**STATUS CODES:**
*ENOSYS*
This routine is not supported by RTEMS.
**DESCRIPTION:**
This routine is not supported by RTEMS.
**NOTES:**
NONE
waitpid - Wait for Process Termination
--------------------------------------
.. index:: waitpid
.. index:: wait for process termination
**CALLING SEQUENCE:**
.. code:: c
int wait(
pid_t pid,
int \*stat_loc,
int options
);
**STATUS CODES:**
*ENOSYS*
This routine is not supported by RTEMS.
**DESCRIPTION:**
This routine is not supported by RTEMS.
**NOTES:**
NONE
_exit - Terminate a Process
---------------------------
.. index:: _exit
.. index:: terminate a process
**CALLING SEQUENCE:**
.. code:: c
void _exit(
int status
);
**STATUS CODES:**
NONE
**DESCRIPTION:**
The ``_exit()`` function terminates the calling process.
**NOTES:**
In RTEMS, a process is equivalent to the entire application on a single
processor. Invoking this service terminates the application.
.. COMMENT: COPYRIGHT (c) 1988-2002.
.. COMMENT: On-Line Applications Research Corporation (OAR).
.. COMMENT: All rights reserved.