[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