Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« Vervielfältigen von Prozessen: fork Prozesse Synchronisation: wait »

exec und system

Der Systemaufruf exec() überlädt den aktuellen Prozess mit dem Inhalt einer ausführbaren Datei und startet sie. Da der alte Speicherinhalt überschrieben wurde, gibt es kein Zurück mehr. Vor dem exec() wird typischerweise ein fork() aufgerufen. Ein Programmaufruf der Shell beispielsweise läuft so ab, dass zunächst die Shell fork() aufruft. Der Sohnprozess ruft nun exec() mit dem Programmnamen auf, der in der Shell eingegeben wurde. Der Vaterprozess dagegen ruft wait() auf und wartet auf das Ende des Sohnes.

Da diese Funktionalität recht häufig auftritt, gibt es einen eigenen Aufruf namens system(). Als Parameter erhält er den Programmnamen. Aus Sicht des Programmes wird das angegebene Programm gestartet und nach dem Ende des Programms setzt das aufrufende Programm seine Aktiviät fort. Um genau zu sein, wird eine Shell (/bin/sh) mit dem Kommando gestartet.

int system(const char *programmname) 

Der Aufruf exec() ist eigentlich eine ganze Funktionsfamilie. Die verschiedenen Verwandten werden gebraucht, um die Aufrufparameter ordentlich weiter geben zu können.

  • [execl(char *path, char *arg, ...);]
    exec mit fester Anzahl von Argumenten. Der letzte Parameter muss NULL sein.

  • [execlp(char *file, char *arg, ...);]
    exec mit fester Anzahl von Argumenten. Der letzte Parameter muss NULL sein.

  • [execle(char *path, char *arg, ..., char *env[]);]
    exec mit fester Anzahl von Argumenten. Der vorletzte Parameter muss NULL sein. Der letzte Parameter ist ein Zeiger auf die Umgebungsvariablen.

  • [execv(char *path, *char arg[]);]
    exec mit Übernahme einer Argumentliste als Vector wie bei main. Das letzte Element des Parameterarrays arg muss NULL sein.

  • [execvp(char *file, *char arg[]);]
    exec mit Übernahme einer Argumentliste als Vector wie bei main. Das letzte Element des Parameterarrays arg muss NULL sein.



« Vervielfältigen von Prozessen: fork | Prozesse | Synchronisation: wait »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
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.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de