今天我發現了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. 是否有可能在Linux中捕獲其他進程信號?
- 2. 是否有可能在MATLAB中改變方法功能處理程序classdef
- 3. 是否有可能在python中更改父進程的環境?
- 4. 線程中的信號處理程序
- 5. SIGKILL信號處理程序
- 6. 讀信號處理程序
- 7. JS事件處理程序是否可以中斷另一個處理程序的執行?
- 8. 用多個進程註冊的處理程序發出一個信號
- 9. 是否有可能從另一個批處理文件(CMD)更改批處理文件(CMD)的標題
- 10. 是否有可能在Heroku上爲Facebook應用程序運行一個進程?
- 11. 是否有可能創建一個僞全球承諾拒絕處理程序?
- 12. nodejs子進程信號處理
- 13. 處理信號後Perl進程崩潰
- 14. 信號不是從另一個線程
- 15. 是否有可能將處理程序綁定到jQuery效果?
- 16. 如何從另一個線程處理信號洪水的Qt
- 17. 僅限於主進程的C Linux信號處理程序
- 18. 如何註冊子進程的信號處理程序?
- 19. 是否有可能在事件處理程序啓動時追蹤事件處理程序的順序?
- 20. 在PowerShell 2中是否有一個cmdlet來處理ipsec更改?
- 21. Linux是否允許從信號處理程序進行任何系統調用?
- 22. PDL是否有信號處理模塊?
- 23. 在另一個處理程序中調用龍捲風處理程序
- 24. 是否有一個處理程序在Android接收套接字?
- 25. 是否有可能通過FileSystemWatcher識別哪個進程正在更改文件?
- 26. HttpContext.RemapHandler是否應該更改哪個處理程序處理請求?
- 27. 如何在一個處理程序中處理多個更改事件?
- 28. 是否有可能爲所有進程創建全局信號量?
- 29. printf的是不是在C信號處理程序工作
- 30. 是否可以使用自定義的sigaction信號處理程序和pthread_sigmask?
+1。如果刪除所有附加處理,那基本上就是2行代碼。 :) – casablanca 2010-08-13 22:23:45