Interaktionen mit dem Betriebsystem

system() – Externe Programme aufrufen

Mittels der Funktion system() aus der Standard-Bibliothek stdlib.h können Programme des Betriebsystems, beispielsweise Shell-Programme, aus einem C-Programm heraus aufgerufen werden. Als Argument wird der Funktion dabei eine Zeichenkette übergeben, die den Namen des aufzurufenden Programms mitsamt aller Argumente und Optionen enthält, beispielsweise "ls -lh":

#include <stdlib.h>

// ...

system("ls -lh");

// ...

Wenn das externe Programm beendet ist, wird das C-Programm weiter ausgeführt.

exit() und atexit() – Programme ordentlich beenden

Mittels der Funktion exit() kann ein Programm in geordneter Weise beendet werden. Als Argument wird beim Aufruf der Funktion ein int-Wert angegeben, der als Rückgabewert an das System dient. Der Wert 0 gilt dabei für ein normales Programmende, der Wert 1 wird üblicherweise im Falle eines Fehlers zurück gegeben.

Trifft das Programm auf eine exit()-Funktion, so werden automatisch alle noch nicht geschriebenen Ausgabe-Streams geschrieben, alle offenen Dateien geschlossen sowie alle mittels tmpfile() angelegten temporären Dateien gelöscht.

Zusätzlich können im vorangehenden Teil des Codes, häufig in der Funktion main(), mittels atexit() Pointer auf Funktionen angegeben werden, die bei einem Aufruf von exit() ausgeführt werden, bevor das Programm beendet wird. Das Besondere dabei ist, dass die Funktionen von hinten nach vorne durchlaufen werden, d.h. die zuletzt angegebene atexit()-Funktion wird als erstes aufgerufen, die als erstes angegebene atexit()-Funktion zuletzt.