Quand dois-je utiliser O_CLOEXEC quand j'ouvre le fichier sous Linux?
Mon processus de fourche plusieurs fois, et à chaque fois que l'enfant sera exec - à-dire je veux exécuter un autre programme.
Dans les principaux processus, j'ai ouvert un descripteur de fichier avec l' open()
syscall.
Serait-il correct de lui donner un drapeau O_CLOEXEC
de sorte que le nouveau programme que je dirige avec exec()
ne serait pas a la fd de ressources?
OriginalL'auteur Bush | 2013-03-16
Vous devez vous connecter pour publier un commentaire.
Oui, sauf si vous avez besoin de vous exec pour avoir accès à ce descripteur de fichier. Vous pouvez également fermer le descripteur de fichier manuellement dans le processus de l'enfant avant l'appel à exec, mais c'est plus sujette aux erreurs.
for (int=3; i<256; i++) close(i);
juste avant laexecve
, ne laissant que stdin, stdout, stderr ....OriginalL'auteur