Existe-t-il un moyen pour forcer un processus père à ne se terminer que
lorsqu'un hypothétique processus enfant est terminé ?
J'ai tenté:
* `commande` mais ça pose des problèmes en cas de sortie sur
stdout.
* echo `commande` mais du coup je perds le code erreur de retour (et
j'en ai besoin).
* `commande 1>&2` qui ne marche pas mieux.
Note: ces commandes sont lancées depuis (X)Emacs (dans un environnement
Bash) qui s'obstine à tuer les enfants dès que le père se termine.
--
Merci de votre attention,
Philippe Ivaldi.
http://piprim.tuxfamily.org/
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
2007-02-08, 18:21(+01), Ph Ivaldi:
Bonjour,
Existe-t-il un moyen pour forcer un processus père à ne se terminer que lorsqu'un hypothétique processus enfant est terminé ? J'ai tenté: * `commande` mais ça pose des problèmes en cas de sortie sur stdout. * echo `commande` mais du coup je perds le code erreur de retour (et j'en ai besoin). * `commande 1>&2` qui ne marche pas mieux.
Note: ces commandes sont lancées depuis (X)Emacs (dans un environnement Bash) qui s'obstine à tuer les enfants dès que le père se termine.
{ empty=`command 3>&1 >&4 4>&-`; } 4>&1
-- Stéphane
2007-02-08, 18:21(+01), Ph Ivaldi:
Bonjour,
Existe-t-il un moyen pour forcer un processus père à ne se terminer que
lorsqu'un hypothétique processus enfant est terminé ?
J'ai tenté:
* `commande` mais ça pose des problèmes en cas de sortie sur
stdout.
* echo `commande` mais du coup je perds le code erreur de retour (et
j'en ai besoin).
* `commande 1>&2` qui ne marche pas mieux.
Note: ces commandes sont lancées depuis (X)Emacs (dans un environnement
Bash) qui s'obstine à tuer les enfants dès que le père se termine.
Existe-t-il un moyen pour forcer un processus père à ne se terminer que lorsqu'un hypothétique processus enfant est terminé ? J'ai tenté: * `commande` mais ça pose des problèmes en cas de sortie sur stdout. * echo `commande` mais du coup je perds le code erreur de retour (et j'en ai besoin). * `commande 1>&2` qui ne marche pas mieux.
Note: ces commandes sont lancées depuis (X)Emacs (dans un environnement Bash) qui s'obstine à tuer les enfants dès que le père se termine.
{ empty=`command 3>&1 >&4 4>&-`; } 4>&1
-- Stéphane
David LE BOURGEOIS
Bonjour,
Bonsoir.
Existe-t-il un moyen pour forcer un processus père à ne se terminer que lorsqu'un hypothétique processus enfant est terminé ?
Je crois que c'est ce que l'OP voulait dire, d'ou l'utilisation d'un pipe pour attendre tous les "writers".
$ cat pere-correcte { blah=`./enfant 3>&1 >&4 4>&-`; } 4>&1 echo "exit status de enfant: $?" $ time ./pere exit status de enfant: 12 ...10 seconds...
-- Stéphane
talon
Ph. Ivaldi wrote:
Bonjour,
Existe-t-il un moyen pour forcer un processus père à ne se terminer que lorsqu'un hypothétique processus enfant est terminé ? J'ai tenté: * `commande` mais ça pose des problèmes en cas de sortie sur stdout. * echo `commande` mais du coup je perds le code erreur de retour (et j'en ai besoin). * `commande 1>&2` qui ne marche pas mieux.
`commande > /dev/null 2>&1 || cas d'erreur` Si la commande renvoie une erreur, ce qui est aprés le || est exécuté. Donc ça remplit toutes les conditions que tu veux.
--
Michel TALON
Ph. Ivaldi <piv_pasde@pub_tele2.fr> wrote:
Bonjour,
Existe-t-il un moyen pour forcer un processus père à ne se terminer que
lorsqu'un hypothétique processus enfant est terminé ?
J'ai tenté:
* `commande` mais ça pose des problèmes en cas de sortie sur
stdout.
* echo `commande` mais du coup je perds le code erreur de retour (et
j'en ai besoin).
* `commande 1>&2` qui ne marche pas mieux.
`commande > /dev/null 2>&1 || cas d'erreur`
Si la commande renvoie une erreur, ce qui est aprés le || est exécuté.
Donc ça remplit toutes les conditions que tu veux.
Existe-t-il un moyen pour forcer un processus père à ne se terminer que lorsqu'un hypothétique processus enfant est terminé ? J'ai tenté: * `commande` mais ça pose des problèmes en cas de sortie sur stdout. * echo `commande` mais du coup je perds le code erreur de retour (et j'en ai besoin). * `commande 1>&2` qui ne marche pas mieux.
`commande > /dev/null 2>&1 || cas d'erreur` Si la commande renvoie une erreur, ce qui est aprés le || est exécuté. Donc ça remplit toutes les conditions que tu veux.
--
Michel TALON
Stephane Chazelas
2007-02-8, 18:47(+00), Michel Talon:
Ph. Ivaldi wrote:
Bonjour,
Existe-t-il un moyen pour forcer un processus père à ne se terminer que lorsqu'un hypothétique processus enfant est terminé ? J'ai tenté: * `commande` mais ça pose des problèmes en cas de sortie sur stdout. * echo `commande` mais du coup je perds le code erreur de retour (et j'en ai besoin). * `commande 1>&2` qui ne marche pas mieux.
`commande > /dev/null 2>&1 || cas d'erreur` Si la commande renvoie une erreur, ce qui est aprés le || est exécuté. Donc ça remplit toutes les conditions que tu veux. [...]
Non, en redirigeant le stdout de commande vers /dev/null, tu perds la connection au pipe. Donc, `...` perd son effet d'attendre tous les eventuels fils de "commande" qui ont un fd ouvert en ecriture sur le pipe.
`sh -c 'sleep 10 &'`
se termine apres 10 seconds.
`sh -c 'sleep 10 &' > /dev/null`
se termine instantanement.
-- Stéphane
2007-02-8, 18:47(+00), Michel Talon:
Ph. Ivaldi <piv_pasde@pub_tele2.fr> wrote:
Bonjour,
Existe-t-il un moyen pour forcer un processus père à ne se terminer que
lorsqu'un hypothétique processus enfant est terminé ?
J'ai tenté:
* `commande` mais ça pose des problèmes en cas de sortie sur
stdout.
* echo `commande` mais du coup je perds le code erreur de retour (et
j'en ai besoin).
* `commande 1>&2` qui ne marche pas mieux.
`commande > /dev/null 2>&1 || cas d'erreur`
Si la commande renvoie une erreur, ce qui est aprés le || est exécuté.
Donc ça remplit toutes les conditions que tu veux.
[...]
Non, en redirigeant le stdout de commande vers /dev/null, tu
perds la connection au pipe. Donc, `...` perd son effet
d'attendre tous les eventuels fils de "commande" qui ont un fd
ouvert en ecriture sur le pipe.
Existe-t-il un moyen pour forcer un processus père à ne se terminer que lorsqu'un hypothétique processus enfant est terminé ? J'ai tenté: * `commande` mais ça pose des problèmes en cas de sortie sur stdout. * echo `commande` mais du coup je perds le code erreur de retour (et j'en ai besoin). * `commande 1>&2` qui ne marche pas mieux.
`commande > /dev/null 2>&1 || cas d'erreur` Si la commande renvoie une erreur, ce qui est aprés le || est exécuté. Donc ça remplit toutes les conditions que tu veux. [...]
Non, en redirigeant le stdout de commande vers /dev/null, tu perds la connection au pipe. Donc, `...` perd son effet d'attendre tous les eventuels fils de "commande" qui ont un fd ouvert en ecriture sur le pipe.
`sh -c 'sleep 10 &'`
se termine apres 10 seconds.
`sh -c 'sleep 10 &' > /dev/null`
se termine instantanement.
-- Stéphane
talon
Stephane Chazelas wrote:
se termine apres 10 seconds.
`sh -c 'sleep 10 &' > /dev/null`
se termine instantanement.
Et oui, tu as raison, comme toujours. N'empêche que ceci traîne bien 5s avant de retourner: `sleep 5 > /dev/null` et ça pareil sh -c 'sleep 5 > /dev/null'
Et oui, tu as raison, comme toujours. N'empêche que ceci
traîne bien 5s avant de retourner:
`sleep 5 > /dev/null`
et ça pareil
sh -c 'sleep 5 > /dev/null'
Et oui, tu as raison, comme toujours. N'empêche que ceci traîne bien 5s avant de retourner: `sleep 5 > /dev/null` et ça pareil sh -c 'sleep 5 > /dev/null'
--
Michel TALON
Ph. Ivaldi
Le 08 février 2007 à 18h44:15, Stephane Chazelas écrivit :
{ empty=`command 3>&1 >&4 4>&-`; } 4>&1
Exactement ce que je cherche. Merci! -- Philippe Ivaldi. http://piprim.tuxfamily.org/
Le 08 février 2007 à 18h44:15,
Stephane Chazelas <cette.adresse@est.invalid> écrivit :
{ empty=`command 3>&1 >&4 4>&-`; } 4>&1
Exactement ce que je cherche.
Merci!
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/