2010-11-13 4 views
0

Que font réellement les appels système dup() et dup2()? Comment pourrais-je les utiliser en pratique?Que font vraiment les systèmes dup() et dup2()?

+0

Quelle partie ne comprenez-vous pas après avoir lu les pages man et recherché? –

+0

je ne pouvais pas comprendre comment utiliser dans la programmation et où utiliser – user484457

+3

Avez-vous regardé http://stackoverflow.com/questions/1720535/practical-examples-use-dup-or-dup2 ou http: // stackoverflow. com/questions/3918962/unix-c-dup2-question? – Zeke

Répondre

2

Les deux font un nouveau descripteur de fichier correspondant à une description de fichier ouvert existante. La plupart des propriétés entre l'ancien et le nouveau fd (comme la position) sont partagées; la seule propriété à laquelle je peux penser et qui n'est pas partagée est le drapeau close-on-exec. La différence entre dup et dup2 est que dup attribue le numéro de descripteur de fichier disponible le plus bas, alors que dup2 vous permet de choisir le numéro de descripteur de fichier qui sera assigné et de le fermer et de le remplacer de manière atomique s'il est déjà pris.

+0

Notez également que 'fcntl' avec la commande' F_DUPFD' se comporte de la même manière que 'dup2', mais n'obstrue pas un fd existant, il peut donc être utilisé en toute sécurité dans les programmes threads pour créer un numéro fd particulier. –