Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Linux-UNIX-Programmierung von Jürgen Wolf
Das umfassende Handbuch – 2., aktualisierte und erweiterte Auflage 2006
Buch: Linux-UNIX-Programmierung

Linux-UNIX-Programmierung
1216 S., mit CD, 49,90 Euro
Rheinwerk Computing
ISBN 3-89842-749-8
gp Kapitel 7 Dämonen, Zombies und Prozesse
  gp 7.1 Was ist ein Prozess?
  gp 7.2 Prozesskomponente
    gp 7.2.1 Prozessnummer (PID)
    gp 7.2.2 Prozessnummer des Vaterprozesses (PPID)
    gp 7.2.3 Benutzer- und Gruppennummer eines Prozesses (UID, EUID, GID, EGID)
    gp 7.2.4 Prozessstatus
    gp 7.2.5 Prozesspriorität
    gp 7.2.6 Timesharing-Prozesse
    gp 7.2.7 Prozessauslagerung
    gp 7.2.8 Steuerterminal
  gp 7.3 Prozesse überwachen – ps, top, kpm
  gp 7.4 Lebenszyklus eines Prozesses
  gp 7.5 Umgebungsvariablen eines Prozesses
    gp 7.5.1 Einzelne Umgebungsvariablen abfragen
    gp 7.5.2 Umgebungsvariable verändern oder hinzufügen – putenv() und setenv()
    gp 7.5.3 Löschen von Umgebungsvariablen – unsetenv() und clearenv()
  gp 7.6 Ressourcenlimits eines Prozesses
    gp 7.6.1 Mehr Sicherheit mit Ressourcenlimits
  gp 7.7 Prozesserkennung
  gp 7.8 Erzeugung von Prozessen – fork()
    gp 7.8.1 Pufferung
    gp 7.8.2 Was wird vererbt und was nicht?
    gp 7.8.3 Einen Prozess mit veränderter Priorität erzeugen
  gp 7.9 Warten auf einen Prozess
  gp 7.10 Die exec-Familie
    gp 7.10.1 execl()
    gp 7.10.2 execve()
    gp 7.10.3 execv()
    gp 7.10.4 execle()
    gp 7.10.5 execlp()
    gp 7.10.6 execvp()
    gp 7.10.7 Kindprozesse mit exec-Aufruf überlagern
  gp 7.11 Kommandoaufrufe aus dem Programm – system()
  gp 7.12 Dämonprozesse
    gp 7.12.1 Wie ein Prozess zum Dämon wird ...
    gp 7.12.2 Dämon, sprich mit uns ...
    gp 7.12.3 Protokollieren von Dämonen – syslog()
    gp 7.12.4 syslog() in der Praxis
    gp 7.12.5 Den Dämon, den ich rief ...
  gp 7.13 Rund um die Ausführung von Prozessen
    gp 7.13.1 Einen Dämon beim Booten mit einem init-Skript starten
    gp 7.13.2 Hintergrundprozesse und Jobkontrolle
    gp 7.13.3 Prozesse zeitgesteuert ausführen (cron-Jobs)
  gp 7.14 Zusammenfassung und Ausblick


Rheinwerk Computing

7.11 Kommandoaufrufe aus dem Programm – system()  toptop

Mit der Funktion system() können Sie aus Ihrem eigenen Programm ein anderes Programm starten. Damit können Sie alle Aufrufe starten, die Sie sonst auch in der Shell starten können. Außer Kommandos der Shell und anderen Anwendungen sind dabei auch Metazeichen wie '*', '|', '<' oder '>' zu beachten. Ein Dateiname darf aus allen Zeichen mit Ausnahme von '\0' (Stringende) und '/' (Verzeichnisoperator) bestehen. Es können Newlines und sonstige Steuerzeichen vorkommen. Es sind also auch Dateiexpansionen, Pipes, Umleitungen etc. möglich. Die Funktion system() ist eine Mischung aus fork(), exec*() und waitpid() und kann auch dafür eingesetzt werden. Hier die Syntax dazu:

#include <stdlib.h>
int system(const char *kommando);

Beim Aufruf der Funktion wird eine Shell (/bin/sh) in einem eigenen Prozess gestartet und führt kommando aus. Danach wartet system() auf die Beendigung des (Kind-)Prozesses. So lange bleibt der aufrufende Prozess allerdings auch blockiert. Wenn die Shell nicht gestartet werden konnte, wird als Fehler der Wert 127 zurückgegeben. Bei fehlerfreier Ausführung gibt system() 0 zurück, ansonsten den Rückgabewert der Shell. Hierzu ein Beispiel, das mithilfe des system()-Aufrufs im Verzeichnis /usr/include nach allen Dateien sucht, die mit der Zeichenfolge 'std' beginnen.

/* my_find.c */
#include <stdlib.h>
#include <stdio.h>
int main (void) {
   printf("Vor dem system()-Aufruf\n");
   system("find /usr/include -name 'std*'");
   printf("Nach dem system()-Aufruf\n");
   return  EXIT_SUCCESS;
}

Das Programm bei der Ausführung:

$ gcc -o my_find my_find.c
$ ./my_find
Vor dem system()-Aufruf
/usr/include/g++/ext/stdio_filebuf.h
/usr/include/g++/stdexcept
/usr/include/bits/stdio-lock.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
/usr/include/linux/stddef.h
/usr/include/stdio.h
/usr/include/stdio_ext.h
/usr/include/stdint.h
/usr/include/stdlib.h
Nach dem system()-Aufruf
 << zurück
  
  Zum Rheinwerk-Shop
Neuauflage: Linux-UNIX-Programmierung
Neuauflage:
Linux-UNIX-
Programmierung

bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-
 Programmierung


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
Info





Copyright © Rheinwerk Verlag GmbH 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern