[gull] Persistance des background jobs après fermeture d'un terminal
Marc SCHAEFER
schaefer at alphanet.ch
Thu Oct 21 12:31:02 CEST 2004
On Tue, Oct 19, 2004 at 08:57:49PM +0200, Marc Mongenet wrote:
> Si je ferme le terminal avec la commande exit de bash ou Control-D,
> les jobs continuent. En revanche si je ferme la fenêtre de rxvt, les
> jobs sont aussi arrêtés (sauf avec nohup, ou disown dans bash).
Peut-être que la fermeture de la fenêtre se traduit par un SIGHUP à
tous les processus du groupe de terminal (session ID) concerné ?
Il ne faut pas oublier qu'il y a deux processus en jeu: xterm (qui émule
un terminal UNIX via ptys, /dev/pts sur systèmes récents) et bash.
Exemple:
- xterm
- lancer sleep 60 &
- ps -eo sid,tty,pid,user,args | egrep 'sleep|bash'
7693 pts/0 7693 schaefer bash
7693 pts/0 7694 schaefer sleep 120
(même terminal, même SID)
- strace -p 7694
- fermer la fenêtre
nanosleep({115, 709115000}, 0) = -1 EINTR (Interrupted system call)
--- SIGHUP (Hangup) ---
Pour éviter ce comportement, il faut détacher le processus de la session
ID / du terminal considérés. Ou ignorer le signal HUP.
More information about the gull
mailing list