首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不承认和不承认是必需的,它本身不起作用?

为什么不承认和不承认是必需的,它本身不起作用?
EN

Stack Overflow用户
提问于 2019-10-14 02:36:55
回答 1查看 197关注 0票数 0

把这个片段看作是保存在一个名为snippet.sh的文件中

代码语言:javascript
复制
nohup xmessage HI </dev/null &>/dev/null & disown
sleep 3

从同一个目录中执行xterm -e bash snippet.sh

3秒后,xterm应消失,而xmessage窗口仍在逗留。一切都很好。但是,如果从代码片段文件中的命令中删除了nohup怎么办?然后,xmessagexterm一起消失。bash文档似乎表明,disown本身应该足以防止发送SIGHUP

代码语言:javascript
复制
       The  shell exits by default upon receipt of a SIGHUP.  Before exiting, an interactive shell resends
       the SIGHUP to all jobs, running or stopped.  Stopped jobs are sent  SIGCONT  to  ensure  that  they
       receive the SIGHUP.  To prevent the shell from sending the signal to a particular job, it should be
       removed from the jobs table with the disown builtin (see SHELL BUILTIN COMMANDS below) or marked to
       not receive SIGHUP using disown -h.

所以,问题是,为什么xmessage窗口没有nohup就不能继续存在

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-14 03:21:44

disown足以阻止外壳发送信号,但它不会阻止其他任何人。

尤其是,外壳是终端的控制过程,其进程组为xmessage,退出时为POSIX说

如果该进程是控制进程,则SIGHUP信号应发送给属于该呼叫进程的控制终端的前台处理组中的每个进程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58369432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档