Quels sont les trois fichiers toujours ouverts par un processus?

7

Quelqu'un a mentionné qu'il existe trois fichiers différents qu'un processus ouvre toujours. Qu'est-ce que ça veut dire? De quels fichiers s'agit-il?

unix_newbie
la source

Réponses:

10

Les fichiers ouverts ne sont pas des fichiers sur le disque. Ce sont les flux (pseudo-fichiers), stdin (0), stdout (1) et stderr (2). Voici l'extrait pertinent de la norme POSIX :

Un fichier avec la mise en mémoire tampon associée est appelé un flux et est déclaré être un pointeur vers un fichier de type défini. La fonction fopen () doit créer certaines données descriptives pour un flux et retourner un pointeur pour désigner le flux dans toutes les transactions ultérieures. Normalement, il existe trois flux ouverts avec des pointeurs constants déclarés dans l'en-tête et associés aux fichiers ouverts standard.

Au démarrage du programme, trois flux doivent être prédéfinis et n'ont pas besoin d'être ouverts explicitement: entrée standard (pour lire l'entrée conventionnelle), sortie standard (pour écrire la sortie conventionnelle) et erreur standard (pour écrire la sortie de diagnostic). Lorsqu'il est ouvert, le flux d'erreur standard n'est pas entièrement mis en mémoire tampon; les flux d'entrée et de sortie standard sont entièrement tamponnés si et seulement si le flux peut être déterminé comme ne faisant pas référence à un appareil interactif.

jordanm
la source