system − führe ein Shellkommando aus
#include <stdlib.h>
int system (const char * string);
system() führt ein Kommando, das in string spezifiziert ist, durch Aufruf von /bin/sh -c string aus und kehrt zurück wenn das Kommando beendet ist. Während der Ausführung des Kommandos wird SIGCHLD blockiert und SIGINT und SIGQUIT werden ignoriert.
Der zurückgegebene Wert ist 127 wenn der Aufruf execve() für /bin/sh fehlschlägt, −1 wenn ein anderer Fehler aufgetreten ist, oder anderenfalls der Rückgebewert des Kommandos.
Wenn der Wert von string NULL ist, so gibt system() Nichtnull zurück wenn die Shell verfügbar ist, Null wenn nicht.
system() beeinflusst nicht den Wartestatus anderer Kindprozesse.
ANSI C, POSIX.1, proposed POSIX.2, BSD 4.3
Benutze nicht system() von einem Programm mit suid- oder sgid-Privilegien aus, da unbekannte Werte für einige Umgebungsvariablen benutzt werden könnten, die die Systemintegrität angreifen können. Benutze stattdessen die Funktionsfamilie exec(2), jedoch nicht execlp(2) oder execvp(2).
Die Prüfung der Verfügbarkeit von /bin/sh wird nicht wirklich durchgeführt; die Shell wird immer als verfügbar angenommen.
Es ist möglich, dass das Shellkommando den Wert 127 zurückgibt, d.h. dass dieser Wert kein eindeutiger Indikator dafür ist, dass der Aufruf von execve() fehlgeschlagen ist; prüfe errno zur Sicherheit.