如何编写从Unix终端上附加/分离的C程序?

时间:2018-05-27 09:33:26

标签: c unix terminal

我写了一个在终端上运行的交互式Unix程序。有时,我让它继续运行然后回家,但后来我无法通过ssh与正在运行的进程交互。

有这样的解决方案就像使用Gnu屏幕等,但是在我的程序中构建这个功能有多难?例如,假设我的程序名为“prog”,并说它在终端中运行。现在想象一下我通过ssh登录。我想写点像

$ prog move
在命令行中

左右,让正在运行的程序将自身传输到ssh会话终端。这应该是可能的,但是很难做到吗?

2 个答案:

答案 0 :(得分:2)

分离相当简单(参见daemon函数)。重新连接更多的是一种痛苦,基本上包括通过命名套接字路由输入和输出,以及第二次调用充当该套接字的中继。但总的来说,构建一个程序是一个愚蠢的事情,因为它不是程序的其他目的。这就像在您的文本编辑器中构建一个电子邮件客户端,以防万一有人想在编辑内容时检查他们的电子邮件。

如果screen对您的需求过重,请尝试dtach程序,该程序旨在包装在单个应用程序中(并且在shell脚本中运行良好)。如果您必须在您的应用程序中推送它,最好的方法可能是合并来自dtach的来源。

答案 1 :(得分:0)

将您的程序分为两部分。

第一部分是一个连续运行的系统,它可以查看文件或管道。

秒是一个命令行程序,它写入管道。