les*_*ana 7 shell bash process-management
当我从运行 bash 的终端启动图形应用程序时,该应用程序以某种方式连接到该 bash 会话。例如,当应用程序转储一些文本时,它会出现在启动它的 bash 会话中。此外,当我使用关闭按钮关闭终端时,某些应用程序将被关闭,但当我使用 exit 命令或 CTRL+D 退出 bash 会话来关闭终端时则不会。
图形应用程序如何从连接到该 bash 会话的 bash 会话启动?
奖金问题:我如何检查这个连接?大概还操纵?
应用程序以两种方式连接:bash 和终端。
与终端的连接是应用程序的标准流(stdin、stdout 和stderr)连接到终端。典型的 GUI 应用程序不使用 stdin 或 stdout,但它们可能会向 stderr 发出错误消息。
与 shell 的连接是,如果您使用 启动应用程序foo &,它仍然被 shell 识别为作业,如nohup、disown 和 & 之间的区别中所述。当您关闭终端时,shell 会收到一个SIGHUP,并将其传播到其作业。当您exit在 shell 中键入时,它会事先拒绝这些作业(这在某种程度上是可配置的)。
您可以切断与disown内置的外壳连接。您无法切断终端连接,至少在没有可能使程序崩溃的不正当方法(使用调试器)的情况下无法切断。