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