summaryrefslogtreecommitdiffstats
path: root/man3/system.3
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--man3/system.335
1 files changed, 17 insertions, 18 deletions
diff --git a/man3/system.3 b/man3/system.3
index 8615623..08ffb07 100644
--- a/man3/system.3
+++ b/man3/system.3
@@ -9,7 +9,7 @@
.\" Modified 14 May 2001, 23 Sep 2001 by aeb
.\" 2004-12-20, mtk
.\"
-.TH system 3 2023-07-20 "Linux man-pages 6.05.01"
+.TH system 3 2023-10-31 "Linux man-pages 6.7"
.SH NAME
system \- execute a shell command
.SH LIBRARY
@@ -18,7 +18,7 @@ Standard C library
.SH SYNOPSIS
.nf
.B #include <stdlib.h>
-.PP
+.P
.BI "int system(const char *" "command" );
.fi
.SH DESCRIPTION
@@ -31,16 +31,16 @@ to create a child process that executed the shell command specified in
using
.BR execl (3)
as follows:
-.PP
+.P
.in +4n
.EX
execl("/bin/sh", "sh", "\-c", command, (char *) NULL);
.EE
.in
-.PP
+.P
.BR system ()
returns after the command has been completed.
-.PP
+.P
During execution of the command,
.B SIGCHLD
will be blocked, and
@@ -52,7 +52,7 @@ will be ignored, in the process that calls
(These signals will be handled according to their defaults inside
the child process that executes
.IR command .)
-.PP
+.P
If
.I command
is NULL, then
@@ -85,7 +85,7 @@ used to execute
.IR command .
(The termination status of a shell is the termination status of
the last command it executes.)
-.PP
+.P
In the last two cases,
the return value is a "wait status" that can be examined using
the macros described in
@@ -94,7 +94,7 @@ the macros described in
.BR WIFEXITED (),
.BR WEXITSTATUS (),
and so on).
-.PP
+.P
.BR system ()
does not affect the wait status of any other children.
.SH ERRORS
@@ -115,7 +115,6 @@ T{
.BR system ()
T} Thread safety MT-Safe
.TE
-.sp 1
.SH STANDARDS
C11, POSIX.1-2008.
.SH HISTORY
@@ -137,7 +136,7 @@ The main cost of
is inefficiency:
additional system calls are required to create the process that
runs the shell and to execute the shell.
-.PP
+.P
If the
.B _XOPEN_SOURCE
feature test macro is defined
@@ -149,7 +148,7 @@ then the macros described in
.RB ( WEXITSTATUS (),
etc.) are made available when including
.IR <stdlib.h> .
-.PP
+.P
As mentioned,
.BR system ()
ignores
@@ -160,7 +159,7 @@ This may make programs that call it
from a loop uninterruptible, unless they take care themselves
to check the exit status of the child.
For example:
-.PP
+.P
.in +4n
.EX
while (something) {
@@ -172,13 +171,13 @@ while (something) {
}
.EE
.in
-.PP
+.P
According to POSIX.1, it is unspecified whether handlers registered using
.BR pthread_atfork (3)
are called during the execution of
.BR system ().
In the glibc implementation, such handlers are not called.
-.PP
+.P
Before glibc 2.1.3, the check for the availability of
.I /bin/sh
was not actually performed if
@@ -192,7 +191,7 @@ a shell, that shell may not be available or executable if
the calling program has previously called
.BR chroot (2)
(which is not specified by POSIX.1-2001).
-.PP
+.P
It is possible for the shell command to terminate with a status of 127,
which yields a
.BR system ()
@@ -219,7 +218,7 @@ or
(which also use the
.B PATH
environment variable to search for an executable).
-.PP
+.P
.BR system ()
will not, in fact, work properly from programs with set-user-ID or
set-group-ID privileges on systems on which
@@ -229,7 +228,7 @@ is bash version 2: as a security measure, bash 2 drops privileges on startup.
.BR dash (1),
which does not do this when invoked as
.BR sh .)
-.PP
+.P
Any user input that is employed as part of
.I command
should be
@@ -253,7 +252,7 @@ option to
.BR sh (1).)
To work around this problem,
prepend the command with a space as in the following call:
-.PP
+.P
.in +4n
.EX
system(" \-unfortunate\-command\-name");