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)