Was passiert mit der Dateideskriptortabelle im übergeordneten Prozess, nachdem Sie DUP2 und EXECVP im untergeordneten Prozess anrufen?

StackOverflow https://stackoverflow.com//questions/25050117

  •  21-12-2019
  •  | 
  •  

Frage

Ich kenne ein einfaches Shell-Programm, aber nicht sicher, was mit der Datei-Deskriptor-Tabelle nach DUP2 () und EXECVP passiert.Ich habe also einen übergeordneten Prozess, der darauf wartet, dass der untergeordnete Prozess auf das Ende (WAITPID) wartet, aber wenn er zurückgeht, um auf die nächste Benutzereingabe zu warten.Ist es daran, dass EXECVP die Dateideskriptortabelle wieder auf das Original zurücksetzt?

edit: Ich habe es herausgefunden.Die Gabelfunktion macht tatsächlich eine separate Kopie des Programmbilds, einschließlich der File-Deskriptortabelle, sodass die FD-Tabelle der Elternprozesse nicht betroffen ist.

War es hilfreich?

Lösung

nichts.Der untergeordnete Prozess erhält eine Kopie der Dateideskriptoren der übergeordneten Dateien, wenn sie von fork() erstellt wird, ändert sich jedoch, dass er danach macht, danach nicht auf den Elternteil zurückzutreten.

(beachten Sie, dass der Status der Dateideskriptoren selbst nicht mit dem übergeordneten, während der Dateideskriptor table nicht geteilt wird!von seinem Elternteil, das sich auch auf die Kopie im Elternteil auswirkt.)

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