SYSTEM(3)

BEZEICHNUNG
system - führe ein Shellkommando aus

ÜBERSICHT
#include <stdlib.h>

int system (const char * string);

BESCHREIBUNG
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.

RÜCKGABEWERT
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.

KONFORM ZU
ANSI C, POSIX.1, proposed POSIX.2, BSD 4.3

BUGS

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.

SIEHE AUCH
sh(1), exec(2), signal(2).