[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bash sends SIGHUP to disowned children in non-interactive mode
From: |
ck850 |
Subject: |
bash sends SIGHUP to disowned children in non-interactive mode |
Date: |
Wed, 28 Dec 2011 18:14:26 +0100 (CET) |
I'm experiencing some strange behaviour with bash and xterm or other
X-terminals.
I'm using bash in Debian stable (GNU bash, Version 4.1.5(1)-release
(i486-pc-linux-gnu)).
To reproduce, write a simple script like this:
#!/bin/bash
(xclock &)
sleep 15
Then run it with xterm -e.
xclock is not a child of xterm or bash (PPID=1) because it was invoked
with "(xclock &)":
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY
TIME CMD
0 S turin 23318 1 0 80 0 - 2292 - 17:52 pts/1
00:00:00 xclock
Yet xclock closes when the script exits because it receives a SIGHUP.
Just strace the PID:
Process 23318 attached - interrupt to quit
restart_syscall(<... resuming interrupted call ...>) = ?
ERESTART_RESTARTBLOCK (To be restarted)
--- SIGHUP (Hangup) @ 0 (0) ---
Process 23318 detached
If you change the header in the script to #!/bin/tcsh or #!/bin/csh
xclock does not receive a SIGHUP.
Therefore I assume the problem is with bash.
Same with disown:
#!/bin/bash
xclock &
disown -a
sleep 15
If I execute the script in an interactive terminal and close the
windows with the "x" button after the script finished xclock stays
open.
No SIGHUP. So where is that SIGHUP coming from in the other case? Any
ideas? Am i missing something?
regards
SMS schreiben mit WEB.DE FreeMail - einfach, schnell und
kostenguenstig. Jetzt gleich testen! [1]http://f.web.de/?mc=021192
References
1. http://f.web.de/?mc=021192