Précédent Index Suivant

5.10   Mort d'un flux

Les filtres, c'est-à-dire les tâches qui exploitent un flux pour en produire un autre, ne vivent que la durée du flux qui les alimente. Une fin de flux est déterminée par une réponse négative à une demande de lecture. Lorsqu'un flux est créé par une lecture dans un fichier (suite d'octets bornée), la fin de flux est facile à prévoir. Mais lorsque le flux provient du clavier ?

On peut ordonner à l'interface de provoquer une fin de flux, ainsi la tâche en lecture saura-t'elle que le flux issu du clavier est achevé. La commande
 stty eof '^D' 
permet de programmer le caractère de fin de flux. Celui-ci émis en début de ligne (c'est-à-dire juste après un LF) ou encore répété deux fois, provoque la terminaison du flux requérant. Le caractère ­D n'est pas transmis et n'est donc utilisé que localement dans l'interface. Par exemple, la commande suivante
{ tee </dev/tty
  echo FIN 1
  tee </dev/tty
  } >/tmp/test  
et les caractères suivants frappés au clavier
abc­Jdef­Jghijkl­D­Dmnop­J­D
créeront, dans le fichier : /tmp/test
abc
def
ghijklFIN 1
mnop  

On peut, bien entendu, transmettre un ­D en le préfixant de ­V ! De nombreux programmes sont des filtres comme, par exemple, tee, mail, sedou encore sh. On peut donc, si l'on est dans le bon mode d'interface, terminer une session en frappant ­D ou encore grâce à la commande intrinsèque exit.
Précédent Index Suivant