Rückgabewert von system() in C

Lesezeit: 2 Minuten

Benutzeravatar von Ronin
Ronin

Ich benutze die system() Befehl in C, um Befehle wie auszuführen sc query mysql oder net start mysql.

Wenn der Parameter ein Nullzeiger ist, gibt er 1 zurück, wenn der cmd-Prozessor in Ordnung ist, andernfalls gibt er 0 zurück. Bei erfolgreicher Befehlsausführung gibt er 0 zurück.

Meine Frage ist: Kann ich eine Liste der Rückgabewerte erhalten? Was wird zurückgegeben, wenn der Befehl ungültig ist, oder wie lautet der Rückgabewert bei erfolgloser Ausführung? Ich möchte je nach Rückgabewert verschiedene Dinge tun system().

  • Mögliches Duplikat des Rückkehrcodes von system()

    – CDahn

    22. Juli 2017 um 12:46 Uhr

Benutzeravatar von A4L
A4L

Als die Dokumente
state system() zurück -1 wenn das Erstellen des neuen Prozesses für den auszuführenden Befehl fehlschlägt, ansonsten wird der Exit-Code des ausgeführten Befehls zurückgegeben. Dies ist derselbe Wert, den Sie abrufen können echo $? unter Unix bzw echo %ERRORLEVEL% in Windows, nachdem Sie denselben Befehl in einer Shell ausgeführt haben. Wenn Sie also mit den Rückgabewerten umgehen wollen, müssen Sie sich ansehen, was die ausgeführten Befehle zurückgeben.

Benutzeravatar von Sangeeth Saravanaraj
Sangeeth Saravanaraj

Alles, was Sie tun müssen, ist man system um mehr darüber zu erfahren system()

BESCHREIBUNG system() führt einen in command angegebenen Befehl durch Aufrufen von /bin/sh -c command aus und kehrt nach Abschluss des Befehls zurück. Während der Ausführung des Befehls wird SIGCHLD blockiert und SIGINT und SIGQUIT werden ignoriert.

RÜCKGABEWERT Der zurückgegebene Wert ist -1 im Fehlerfall (z. B. fork(2) fehlgeschlagen) und ansonsten der Rückgabestatus des Befehls. Dieser letztere Rückgabestatus hat das in wait(2) angegebene Format. Daher lautet der Exit-Code des Befehls WEXITSTATUS(status). Falls /bin/sh nicht ausgeführt werden konnte, ist der Exit-Status der eines Befehls, der exit(127) ausführt. Wenn der Wert von command NULL ist, gibt system() einen Wert ungleich Null zurück, wenn die Shell verfügbar ist, und Null, wenn nicht.

system() gibt den Exit-Code des von Ihnen gestarteten Prozesses zurück.

Die Exit-Codes haben im Allgemeinen nur die Konvention, dass ein Exit-Code von 0 Erfolg bedeutet und Nicht-Null einen Fehler bedeutet. Was die eigentliche Bedeutung der verschiedenen Exit-Codes betrifft, so sind sie für jedes Programm spezifisch, oft nach Lust und Laune des Programmierers. Sie müssen die Dokumentation des jeweiligen Programms nachschlagen, das Sie ausführen (obwohl es meistens nicht dokumentiert ist, müssen Sie den Quellcode durchlesen).

1443790cookie-checkRückgabewert von system() in C

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy