proc_pid_fd(5) File Formats Manual proc_pid_fd(5) NOM /proc/pid/fd/ - Descripteurs de fichier DESCRIPTION /proc/pid/fd/ Il s'agit d'un sous-repertoire contenant un enregistrement pour chaque fichier ouvert par le processus. Chaque enregistrement a le descripteur du fichier pour nom, et est un lien symbolique vers le vrai fichier. Ainsi, 0 correspond a l'entree standard, 1 a la sortie standard, 2 a la sortie d'erreur, etc. Pour les descripteurs de fichier de tubes et de sockets, les enregistrements seront des liens symboliques dont le contenu est le type de fichier avec l'inoeud. Un appel de readlink(2) sur ce fichier renvoie une chaine au format : type:[inoeud] Par exemple, socket:[2248868] sera un socket et son inoeud est 2248868. Pour les sockets, cet inoeud permet de trouver plus de renseignements dans un des fichiers de /proc/net/. Pour les descripteurs de fichier sans inoeud correspondant (par exemple les descripteurs de fichier produits par bpf(2), epoll_create(2), eventfd(2), inotify_init(2), perf_event_open(2), signalfd(2), timerfd_create(2) et userfaultfd(2)), l'enregistrement sera un lien symbolique avec un contenu de la forme : anon_inode:type_fichier Dans de nombreux cas (mais pas tous), le type_fichier est entoure de crochets. Par exemple, un descripteur de fichier epoll aura un lien symbolique dont le contenu est la chaine anon_inode:[eventpoll]. Dans un processus multithread, le contenu de ce repertoire n'est pas disponible si le processus principal est deja termine (typiquement par l'appel de pthread_exit(3)). Les programmes qui prennent un nom de fichier comme parametre de la ligne de commande, mais qui ne prennent pas leur entree sur l'entree standard si aucun parametre n'est fourni, ou qui ecrivent dans un fichier indique par un parametre de la ligne de commande sans envoyer la sortie sur la sortie standard si aucun parametre n'est fourni, peuvent neanmoins utiliser l'entree standard et la sortie standard par l'intermediaire des fichiers /proc/pid/fd comme arguments de ligne de commande. Par exemple, en supposant que l'option -i indique le nom du fichier d'entree et l'option -o le nom du fichier de sortie : $ tototiti -i /proc/self/fd/0 -o /proc/self/fd/1 ... et vous avez alors realise un filtre fonctionnel. /proc/self/fd/N est approximativement identique a /dev/fd/N sur certains systemes UNIX ou de type UNIX. En fait, la plupart des scripts MAKEDEV de Linux lient symboliquement /dev/fd a /proc/self/fd. La plupart des systemes fournissent les liens symboliques /dev/stdin, /dev/stdout et /dev/stderr, qui sont respectivement lies aux fichiers 0, 1 et 2 de /proc/self/fd. Par consequent, l'exemple precedent peut etre ecrit de la facon suivante : $ tototiti -i /dev/stdin -o /dev/stdout ... La permission de dereferencer ou de lire (readlink(2)) ces liens symboliques dans ce repertoire est regie par une verification du mode d'acces ptrace PTRACE_MODE_READ_FSCREDS ; consulter ptrace(2). Remarquez que pour les descripteurs de fichier referencant des inoeuds (tubes et sockets, voir ci-dessus), ces inoeuds ont toujours les bits de permission et les informations d'appartenance distincts de ceux de l'enregistrement /proc/pid/fd, et le proprietaire peut etre different des ID utilisateur et groupe du processus. Un processus non privilegie peut ne pas avoir les permissions suffisantes pour les ouvrir, comme dans cet exemple : $ echo test | sudo -u nobody cat test $ echo test | sudo -u nobody cat /proc/self/fd/0 cat: /proc/self/fd/0: Permission denied Le descripteur de fichier 0 se refere au tube cree par l'interpreteur et ayant pour proprietaire cet utilisateur d'interpreteur, qui est nobody, aussi cat n'a pas la permission de creer un nouveau descripteur de fichier pour lire cet inoeud, meme s'il peut toujours lire a partir de son descripteur de fichier 0 existant. VOIR AUSSI proc(5) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Jean-Paul Guillonneau et Lucien Gentis Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.9.1 2 mai 2024 proc_pid_fd(5)