Provided by: manpages-fr_4.27.0-1_all 

NOM
/proc/pid/fd/ - Descripteurs de fichier
DESCRIPTION
/proc/pid/fd/
Il s'agit d'un sous-répertoire 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 à l'entrée standard, 1 à la sortie standard, 2 à 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’inœud. Un appel de readlink(2) sur ce
fichier renvoie une chaîne au format :
type:[inœud]
Par exemple, socket:[2248868] sera un socket et son inœud est 2248868. Pour les sockets, cet inœud
permet de trouver plus de renseignements dans un des fichiers de /proc/net/.
Pour les descripteurs de fichier sans inœud 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 entouré de crochets.
Par exemple, un descripteur de fichier epoll aura un lien symbolique dont le contenu est la chaîne
anon_inode:[eventpoll].
Dans un processus multithread, le contenu de ce répertoire n'est pas disponible si le processus
principal est déjà terminé (typiquement par l'appel de pthread_exit(3)).
Les programmes qui prennent un nom de fichier comme paramètre de la ligne de commande, mais qui ne
prennent pas leur entrée sur l'entrée standard si aucun paramètre n'est fourni, ou qui écrivent
dans un fichier indiqué par un paramètre de la ligne de commande sans envoyer la sortie sur la
sortie standard si aucun paramètre n'est fourni, peuvent néanmoins utiliser l'entrée standard et
la sortie standard par l'intermédiaire 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'entrée 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 réalisé un filtre fonctionnel.
/proc/self/fd/N est approximativement identique à /dev/fd/N sur certains systèmes UNIX ou de type
UNIX. En fait, la plupart des scripts MAKEDEV de Linux lient symboliquement /dev/fd à
/proc/self/fd.
La plupart des systèmes fournissent les liens symboliques /dev/stdin, /dev/stdout et /dev/stderr,
qui sont respectivement liés aux fichiers 0, 1 et 2 de /proc/self/fd. Par conséquent, l'exemple
précédent peut être écrit de la façon suivante :
$ tototiti -i /dev/stdin -o /dev/stdout ...
La permission de déréférencer ou de lire (readlink(2)) ces liens symboliques dans ce répertoire
est régie par une vérification du mode d’accès ptrace PTRACE_MODE_READ_FSCREDS ; consulter
ptrace(2).
Remarquez que pour les descripteurs de fichier référençant des inœuds (tubes et sockets, voir
ci-dessus), ces inœuds ont toujours les bits de permission et les informations d’appartenance
distincts de ceux de l’enregistrement /proc/pid/fd, et le propriétaire peut être différent des ID
utilisateur et groupe du processus. Un processus non privilégié 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 réfère au tube créé par l’interpréteur et ayant pour propriétaire
cet utilisateur d’interpréteur, qui est nobody, aussi cat n’a pas la permission de créer un
nouveau descripteur de fichier pour lire cet inœud, même s’il peut toujours lire à partir de son
descripteur de fichier 0 existant.
VOIR AUSSI
proc(5)
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess
<https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud
<tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
<fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau
<jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François
<nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard
<simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot
<david@tilapin.org>, Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr> et Lucien Gentis
<lucien.gentis@waika9.com>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License
version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à
debian-l10n-french@lists.debian.org.
Pages du manuel de Linux 6.9.1 2 mai 2024 proc_pid_fd(5)