图形应用程序如何从连接到该 bash 会话的 bash 会话启动?

图形应用程序如何从连接到该 bash 会话的 bash 会话启动?

当我从运行 bash 的终端启动图形应用程序时,该应用程序以某种方式连接到该 bash 会话。例如,当应用程序转储一些文本时,它将出现在启动它的 bash 会话中。另外,当我使用关闭按钮关闭终端时,某些应用程序将关闭,但当我使用 exit 命令或 CTRL+D 退出 bash 会话来关闭终端时,某些应用程序将不会关闭。

图形应用程序如何从连接到该 bash 会话的 bash 会话启动?

额外问题:我如何检查此连接?也许还操纵?

答案1

该应用程序以两种方式连接:连接到 bash 和连接到终端。

与终端的连接是将应用程序的标准流(stdin、stdout 和 stderr)连接到终端。典型的 GUI 应用程序不使用 stdin 或 stdout,但它们可能会向 stderr 发出错误消息。

与 shell 的连接是,如果您使用 启动应用程序foo &,则 shell 仍然将其视为一项作业,如中所述nohup、disown 和 & 之间的区别。当您关闭终端时,shell 会收到一个SIGHUP,并将其传播到其作业。当您exit在 shell 中键入内容时,它会预先否认作业(这在某种程度上是可配置的)。

您可以断开 shell 与disown内置的连接。您无法切断终端连接,至少在没有可能导致程序崩溃的卑鄙方法(使用调试器)的情况下无法切断。

答案2

您的 shell 将这些程序作为子进程启动。如果你运行 pstree 你可以看到这些关系。我不知道你是否/如何操纵它。

相关内容