Redirection des descripteurs 1 et 2 vers le même fichier Redirection:descripteurs 1 et 2 vers le même fichier (mécanisme interne)
Pour envoyer la sortie standard et la sortie d’erreur standard dans le même fichier, il faut employer une syntaxe particulière. Voici ce qu’il ne faut pas écrire et la raison pour laquelle cela ne fonctionne pas.
Syntaxes incorrectes
$ commande 1> fichier 2> fichier
$ commande 1> fichier 2>> fichier
Le problème ne réside pas dans le fait que l’on ouvre deux fois le même fichier (ce qui est parfaitement légal au sein d’un même processus), mais qu’il y a un offset (position courante dans le fichier) associé à chaque ouverture. Quelles sont les conséquences ?
-
La séquence des résultats dans le fichier ne sera pas forcément représentative de l’ordre dans lequel se sont déroulés les événements.
-
Les résultats émis à travers les descripteurs 1 et 2 risquent de se chevaucher.
Les figures 1 et 2 présentent le mécanisme interne associé à la commande suivante :
$ find / -name passwd 1> resu 2> resu
Première étape (cf. Figure 1)
Traitement de la redirection 1> resu :
Le shell ouvre le fichier resu (le fichier est créé avec une taille égale à 0) et l’associe au descripteur 1 (1), (2), (3), (4), (5). Lorsqu’un processus...