※ 引述《moodu (moodu)》之銘言:
: 請問喔
: 對遠端主機(UNIX)下了指令之後
: 因為要跑很久
: 要如何斷線後讓程式仍能繼續執行
: 謝謝
把它寫成 daemon process 就行了:
http://www.enderunix.org/docs/eng/daemon.php
看 daemonize() 函數的部分, 步驟大約有:
1. fork() 一份出來, parent process 就直接死掉....
2. setsid() 取得新的 process group
要和原本的 shell 不同 process group,
不然 shell 結束也會一起結束....
3. 關掉所有開啟的檔案 (descriptors)
4. 把 stdin、stdout 重導到 /dev/null
5. 關掉某些 signal
這算是比較早期的寫法,
不同的系統似乎也有不同的要求,
而如果是用 FreeBSD,
它有一個 daemon 函數似乎可以直接完成這些動作,
不過我沒用過....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.74.191.133
※ 編輯: ssagit 來自: 211.74.191.133 (09/10 19:46)