wait est un builtin shell qui dit au shell de lancer le syscall wait (ou waitpid), donc tu ne peux attendre que les fils du shell.
Il y a plein de solutions a ton probleme:
- ton process tient un lock exculsif sur un fichier (via fcntl), et tu peux donc attendre avec la demande du meme lock;
- ton process tient une socket, et tu peux donc attendre avec un select, ca revient un peu au meme;
- tu t'attaches carrement au processus cible, via ce que tu veux (gdb, ..., le plus simple: strace). L'attache tombera avec la fin du process cible:
shell A
#sleep 60
shell B
#strace -q -e '' -s 0 -p `pidof sleep` && echo 'finit!'
[^] # Re: Re
Posté par riba . En réponse au message attendre la fin d'un processus créé depuis un autre shell. Évalué à 4.
wait est un builtin shell qui dit au shell de lancer le syscall wait (ou waitpid), donc tu ne peux attendre que les fils du shell.
Il y a plein de solutions a ton probleme:
- ton process tient un lock exculsif sur un fichier (via fcntl), et tu peux donc attendre avec la demande du meme lock;
- ton process tient une socket, et tu peux donc attendre avec un select, ca revient un peu au meme;
- tu t'attaches carrement au processus cible, via ce que tu veux (gdb, ..., le plus simple: strace). L'attache tombera avec la fin du process cible:
shell A
#sleep 60
shell B
#strace -q -e '' -s 0 -p `pidof sleep` && echo 'finit!'