Man page - proc_pid_fd(5)

Packages contains this manual

Available languages:

en fr pl ru ro de

Manual

proc_pid_fd

NOM
DESCRIPTION
VOIR AUSSI
TRADUCTION

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 .