setsid i zamkniecie STDIN,STDERR,STDOUT
Paweł Żurowski
pzurowski w pld-linux.org
Nie, 10 Paź 2004, 22:04:03 CEST
Dnia 10-10-2004, nie o godzinie 19:51 +0200, Jacek Konieczny napisał(a):
> Żeby się program odpiął od terminala to musi.
>
> [jajcus w dell jajcus]$ sleep 10 &
[...]
> 10912 tty2 00:00:00 sleep
>
> [jajcus w dell jajcus]$ sleep 10 </dev/null >/dev/null 2>&1 &
[...]
> 10914 tty2 00:00:00 sleep
>
> Jak widać w obu przypadkach chodzi w tle, ale jest wciąż przypięty do
> terminala. Po zamknięciu terminala (SAK, zamknięcie xterma itp.) proces
> dostanie SIGHUP i zginie.
>
hmmm... a zerknij na to...
(5)(0j)[pawel w aktyn SPECS]$ ssh localhost
Password:
(0)(0j)[pawel w aktyn pawel]$ sleep 30 </dev/null >/dev/null 2>&1 &
[1] 31200
(0)(1j)[pawel w aktyn pawel]$ exit
Connection to localhost closed.
(0)(0j)[pawel w aktyn SPECS]$ ps -C sleep
PID TTY TIME CMD
31200 ? 00:00:00 sleep
(0)(0j)[pawel w aktyn SPECS]$
>[jajcus w dell jajcus]$ setsid sleep 10 </dev/null >/dev/null 2>&1 &
[...]
> 10917 ? 00:00:00 sleep
>
> Dopiero tutaj proces został prawidłowo "zdemonizowany" -- odpięty od
> terminala. Ale to też nie zawsze zadziała, np. pod mc procesy mają
> otwarte jeszcze inne deskryptory, które wiążą je z rodzicem i/lub
> z terminalem.
dzieki, fajnie sie czegos nauczyc :)
pozdrawiam
-pawel
--
Pawel Zurowski
Więcej informacji o liście dyskusyjnej pld-users-pl