Frage

Nach einem Prozess Gabeln und dem Sohn Invokes execv gegabelt, ist das Ergebnis immer noch der Sohn des Vaters?

War es hilfreich?

Lösung

Gabel erzeugt einen neuen Prozess das Kind des ELTERN ..... exec ersetzt das aktuelle laufende Programm mit dem Prozess exec'd und daher bleibt der Kindprozess des ELTERN ...

genannt

Andere Tipps

Ja. execv keinen neuen Prozess schaffen - deshalb müssen Sie zuerst Gabel

.

Ja, es ist. Auch der Begriff „Prozess Familie“ ist unangenehm nah an „Prozessgruppe“, die durchaus ein wichtiges Konzept ist.

Sie sind auf dem richtigen Weg. Grundsätzlich ist die Gabel (2) Systemaufruf in in alter UNIX erstellt eine Kopie des Prozesses, der gegabelt, mit einem neuen PID und einen neuen Prozess-Stack, das Kopieren des Speicherplatz, es zu tun. Der exec lädt den bestehenden Prozess mit einem neuen Bild. Sie können in den meisten Schalen eine Version, dass in dem exec Betrieb zu sehen -. Es sich um das gewünschte Bild in dem Prozess, der durch die Schale besetzt

Wenn Sie einen Prozess Gabel, kehrte der Systemaufruf fork die PID des neuen Prozesses, wenn Sie die Eltern sind, oder 0, wenn Sie das Kind sind. Das Kind Prozess erbt auch alle geöffneten Datei-Deskriptoren, insbesondere 0,1 und 2, die sind häufiger als STDIN, STDOUT bekannt und STDERR.

(Pop-Quiz: Wie nehmen Sie an einer Shell verwaltet Umleitung, zB mit >)

Modernere UNIX-Varianten mit größeren Adressräumen (das Original UNIX hatte nur 64K Worte total!) Implemen Variante Gabel genannt vfork , dass nur kopiert die notwendige Teilmenge des Prozesses anfangen zu laufen, und hängt davon ab, die Speicher-Manager in dem Rest zu ziehen, wenn nötig. Da die meisten mal Gabel sofort von exec gefolgt wird, die ein neues Bild sowieso laden muss, ist dies eine deutliche Optimierung.

Mach nimmt, dass ein Schritt weiter; wenn Sie einen neuen PProcess erstellen, wird nichts kopiert, außer, was Sie für einen Ausführungskontext benötigen; das Bild ist genau das gleiche. Kopieren geschieht nur, wenn der Prozess eine Stelle im Speicher ändert, an welcher Stelle der Seite, die Position enthält, kopiert wird. Dies wird als "Copy on Write" genannt und ist fast optimal.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top