Cosa succede alla tabella Descrittore del file nel processo genitore dopo aver chiamato DUP2 e Execvp nel processo infantile?

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

  •  21-12-2019
  •  | 
  •  

Domanda

Sto codificando un semplice programma di shell ma non è sicuro di ciò che accade alla tabella Descrittore del file dopo DUP2 () e Execvp.Quindi ho un processo genitore in attesa che il processo figlio finisca (waitpid) ma quando tornò ad aspettare l'input dell'utente successivo, come mai la tabella descrittata del file che ho modificato utilizzando DUP2 nel processo infantile non persistono nel processo genitore?È perché Execvp ripristina il file descrittore del file Torna all'originale?

Modifica: l'ho capito.La funzione della forcella effettiva effettivamente una copia separata dell'immagine del programma, inclusa la tabella descritta dal file, quindi la tabella FD del processo dei genitori non è influenzata.

È stato utile?

Soluzione

Niente.Il processo figlio riceve una copia dei descrittori dei file dei genitori quando è stato creato da fork(), ma le modifiche apportano dopo che non sono condivisi al genitore.

(Nota che, mentre il descrittore del file Table non è condiviso con il genitore, lo stato dei descrittori dei file è! Ad esempio, se seek() su un descrittore di file che un processo di figlio ereditatoDal suo genitore, che colpisce anche la copia nel genitore.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top