Qu'advient-il de la table descripteur de fichier dans le processus parent après avoir appelé DUP2 et ExecvP dans le processus d'enfant?
Question
Je codifie un programme de shell simple mais incertain de ce qui arrive à la table descripteur de fichier après DUP2 () et ExecvP.J'ai donc un processus de parent en attente de la fin du processus d'enfant (WaiterPID) mais lorsqu'il se réchauffe pour attendre la prochaine entrée de l'utilisateur, quelle est la table descripteur de fichier que j'ai modifiée à l'aide de DUP2 dans le processus d'enfant ne persiste pas dans le processus parent?Est-ce parce que ExecVP réinitialise la table de descripteur de fichier à l'original?
Edit: Je l'ai compris.La fonction Fork établit une copie séparée de l'image du programme, y compris la table descripteur de fichier, de sorte que la table FD du processus parent ne soit pas affectée.
La solution
rien.Le processus enfant reçoit une copie des descripteurs de fichiers du parent lorsqu'il est créé par fork()
, mais les modifications apportées à ce que cela ne soit pas partagé vers le parent.
(Notez que, tandis que le descripteur de fichier