05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

2.5 Prozeßkontrolle 91<br />

execv(), execle(), execve(), execlp() oder execvp() auf, so wird sein Prozeßabbild<br />

durch ein neues Programm ersetzt. Das neue Prozeßabbild behält<br />

dabei wesentliche Teile der ursprünglichen Prozeßumgebung bei. Dazu zählen<br />

insbesondere:<br />

• Prozeß-ID<br />

• Elternprozeß-ID<br />

• Prozeßgruppen-ID<br />

• Session-Mitgliedschaft<br />

• reale User-ID<br />

• reale Group-ID<br />

• zusätzliche Group-IDs<br />

• verbleibende Zeit bis zu einem Alarmsignal<br />

• Signalmaske für den Prozeß<br />

• anhängige Signale<br />

• offene Dateideskriptoren (sofern nicht anders festgelegt)<br />

Nachdem allerdings das Prozeßabbild komplett ersetzt wird, kehren die exec-<br />

Funktionen nicht mehr zurück. Stattdessen setzt sich der Programmfluß <strong>mit</strong><br />

der main()-Funktion des neuen Programms fort. Die Argumente der main()-<br />

Funktion werden dabei komplett über die Parameter der exec-Funktionen<br />

bereitgestellt. Die Art <strong>und</strong> Weise, wie die Argumente für die main()-Funktion<br />

übergeben werden, unterscheidet die exec-Funktionen in zwei Kategorien:<br />

execl*: Bei den l-Varianten der exec-Funktionen werden die Argumente für<br />

das startende Programm als variable Argumentenliste (daher l für Liste)<br />

angegeben. Die Liste der Programmargumente besteht aus Zeigern auf<br />

Zeichenketten <strong>und</strong> muß durch einen Null-Zeiger terminiert werden.<br />

execv*: Die v-Varianten erwarten die Argumente als einen Vektor von Zeigern<br />

auf Zeichenketten (daher v für Vektor). Auch dieser Vektor muß als letztes<br />

Element einen Null-Zeiger enthalten.<br />

Die zwei auf e endenden Ausprägungen execle() <strong>und</strong> execve() erlauben es<br />

darüber hinaus, die Umgebungsvariablen für das neue Programm festzulegen.<br />

Im letzten Argument envp der beiden Funktionen wird ein Vektor von Zeigern<br />

auf Zeichenketten erwartet, der die Umgebungsvariablen enthält. Die anderen<br />

vier Funktionen übernehmen als Umgebungsvariablen implizit den Vektor<br />

environ, der auf die Umgebungsvariablen des aufrufenden Prozeß’ verweist.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!