今天我發現了nohup
工具,並在想它的實現。具體來說,似乎必須有一種方法來告訴另一個進程或子進程忽略某些信號。有沒有系統調用,或類似的東西,是否這樣做?是否有可能在另一個進程中更改信號處理程序?
2
A
回答
2
願source與你同在:)
Disclamer:這句話其實不是我,而是Marshall Kirk McKusick。
0
進程在執行調用後保留信號掩碼。
參見來源的nohup這裏,例如:
http://www.opensource.apple.com/source/shell_cmds/shell_cmds-118/nohup/nohup.c
有關EXEC細節()調用在這裏看到:
http://www.opengroup.org/onlinepubs/009695399/functions/exec.html
即:
新流程至少應繼承 個從 調用進程映像以下屬性:
...進程信號掩碼(見 sigprocmask()執行)
2
nohup的根本exec
的你給它忽略了HUP
信號之後的命令。從源代碼:
signal (SIGHUP, SIG_IGN);
/* skipping some stuff ... */
execvp (*cmd, cmd);
我假設這意味着,如果指定的命令不喜歡的東西:
signal (SIGHUP, SIG_DFL); /* restore default HUP signal handler */
的nohup將無法正常工作。
相關問題
- 1. 是否可以更改信號處理程序返回點?
- 2. 是否有可能在Linux中捕獲其他進程信號?
- 3. 爲特定信號註冊信號處理程序是否會覆蓋另一個註冊信號?
- 4. 是否有可能在處理程序中有一個靜態變量?
- 5. 是否有可能從一個模塊中排列一個處理程序?
- 6. 是否有可能在MATLAB中改變方法功能處理程序classdef
- 7. 是否有可能在python中更改父進程的環境?
- 8. 我可以在另一個服務器處理程序中更改處理程序回調函數嗎
- 9. 線程中的信號處理程序
- 10. 有沒有辦法測試我是否處於信號處理程序中?
- 11. SIGKILL信號處理程序
- 12. 讀信號處理程序
- 13. 是否有可能在另一個程序中按功能在一個應用程序中觸發keybord事件?
- 14. c中的子進程信號處理
- 15. JS事件處理程序是否可以中斷另一個處理程序的執行?
- 16. 多進程信號處理程序中的奇怪結果
- 17. 從信號處理程序中殺死子進程
- 18. 用多個進程註冊的處理程序發出一個信號
- 19. 是否有可能路由到另一個angularjs應用程序?
- 20. 父進程在子進程中觸發信號,但孩子的信號處理需要改進
- 21. 信號由孩子處理,但不是由父進程處理?
- 22. C++應用程序中的多個信號處理程序
- 23. 處理信號後,C程序能否繼續執行?
- 24. pthread_exit()在信號處理程序
- 25. Hunchentoot處理程序更改另一個函數的定義
- 26. 是否有可能從另一個批處理文件(CMD)更改批處理文件(CMD)的標題
- 27. 信號處理程序vs事件處理程序
- 28. 是否有HTML5 AJAX應用程序的URL更改處理程序?(如HTML4的hashchange處理程序)
- 29. 是否有可能在Heroku上爲Facebook應用程序運行一個進程?
- 30. 檢查信號處理程序是否爲默認
+1。如果刪除所有附加處理,那基本上就是2行代碼。 :) – casablanca 2010-08-13 22:23:45