【发布时间】:2010-12-23 08:34:33
【问题描述】:
以 UNIX-y 方式,我尝试启动一个进程,将其置于后台,并将该进程的生命周期绑定到我的 shell。
我所说的不仅仅是后台处理进程,我希望向进程发送 SIGTERM,或者让它有一个关闭的打开文件描述符,或者 something 当shell 退出,因此 shell 的用户不必显式终止进程或收到“您有正在运行的作业”警告。
最终我想要一个程序,它可以为每个 shell 唯一地运行,并与该 shell 一起携带状态,并在 shell 关闭时关闭。
IBM 的 DB2 控制台命令以这种方式工作。当您连接到数据库时,它会生成一个“db2bp”进程,该进程携带数据库状态和连接并将其绑定到您的 shell。您可以在多个不同的终端或 ssh 连接中进行连接,每个都有自己的 db2bp 进程,当这些连接关闭时,相应的 db2bp 进程就会终止,并且该连接也将关闭。
然后使用 db2 命令启动 DB2 查询,该命令只是将其交给适当的 db2bp 进程。我不知道它是如何与正确 db2bp 进程通信的,但也许它使用连接到stdin 的tty 设备作为唯一键?我想我也需要弄清楚这一点。
我从来没有写过任何 tty 操作的东西,所以我什至不知道从哪里开始。如果我可以生成一个在 shell 退出时自动终止的进程,我想我可以解决剩下的问题。有谁知道 DB2 是怎么做到的?
【问题讨论】:
标签: unix shell process db2 terminal