今天我发现了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