Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane CHAZELAS
Le Mon, 6 Oct 2003 11:55:57 +0200, Sebastien écrivait :
Dans un script je réalise l'envoi de données au travers d'un fichier fifo. Pour ça je crée le fichier :
mknod FICHIER p
Utilise plutot "mkfifo FICHIER"
Puis je l'utilise (avec gzip en l'occurence ) :
gzip < p > Sortie &
A la fin de mon script je voudrais arreter gzip : comment procéder ? [...]
Normalement, gzip devrait s'arreter automatiquement quand l'autre processus en face a fermé l'autre bout du pipe.
En fait, ce qui se passe dans « gzip < p > Sortie » :
le shell se forke et dans le fils ouvre "p" en lecture. Ce "open" est bloqué jusqu'à ce qu'un processus en face ouvre "p" en écriture. Ensuite le shell "exec"e gzip qui fait des "read" sur le file descriptor correspondant à "p". Si le pipe est vide "read" bloque, mais s'il est vide et qu'il n'y a plus un processus en face, alors le read renvoie 0 indiquant à gzip une fin de fichier.
$ gzip < p > p.gz & [1] 242 $ exec 3> p $ echo test >&3 $ echo test2 >&3 $ exec 3>&- $ [1] + done gzip < p > p.gz
-- Stéphane
Le Mon, 6 Oct 2003 11:55:57 +0200, Sebastien <svinot@telecom.capgemini.fr> écrivait :
Dans un script je réalise l'envoi de données au travers d'un fichier fifo.
Pour ça je crée le fichier :
mknod FICHIER p
Utilise plutot "mkfifo FICHIER"
Puis je l'utilise (avec gzip en l'occurence ) :
gzip < p > Sortie &
A la fin de mon script je voudrais arreter gzip : comment procéder ?
[...]
Normalement, gzip devrait s'arreter automatiquement quand
l'autre processus en face a fermé l'autre bout du pipe.
En fait, ce qui se passe dans « gzip < p > Sortie » :
le shell se forke et dans le fils ouvre "p" en lecture. Ce
"open" est bloqué jusqu'à ce qu'un processus en face ouvre "p"
en écriture. Ensuite le shell "exec"e gzip qui fait des "read"
sur le file descriptor correspondant à "p". Si le pipe est vide
"read" bloque, mais s'il est vide et qu'il n'y a plus un
processus en face, alors le read renvoie 0 indiquant à gzip une
fin de fichier.
Le Mon, 6 Oct 2003 11:55:57 +0200, Sebastien écrivait :
Dans un script je réalise l'envoi de données au travers d'un fichier fifo. Pour ça je crée le fichier :
mknod FICHIER p
Utilise plutot "mkfifo FICHIER"
Puis je l'utilise (avec gzip en l'occurence ) :
gzip < p > Sortie &
A la fin de mon script je voudrais arreter gzip : comment procéder ? [...]
Normalement, gzip devrait s'arreter automatiquement quand l'autre processus en face a fermé l'autre bout du pipe.
En fait, ce qui se passe dans « gzip < p > Sortie » :
le shell se forke et dans le fils ouvre "p" en lecture. Ce "open" est bloqué jusqu'à ce qu'un processus en face ouvre "p" en écriture. Ensuite le shell "exec"e gzip qui fait des "read" sur le file descriptor correspondant à "p". Si le pipe est vide "read" bloque, mais s'il est vide et qu'il n'y a plus un processus en face, alors le read renvoie 0 indiquant à gzip une fin de fichier.