如何从终端分离程序并将其附加回来?

Ott*_*ana 5 c linux terminal embedded-linux multiplexing

我正在开发一个嵌入式项目,我需要一个没有外部依赖项的程序,它可以像screen或tmux一样工作.这两个程序并不好,因为它们需要其他库.

因为我只需要分离一个程序,当我再次登录时能够注销并取回它,我想知道我是否可以为此编写一个小程序.

你知道我需要做哪些调用(在C中)来分离程序并将其恢复吗?

fkl*_*fkl 4

如果我正确理解您的要求,理论上您可以使用 termios struct 和 ioctl 来实现这一点。

ioctl(0, TIOCNOTTY, NULL);
Run Code Online (Sandbox Code Playgroud)

分离和

ioctl(0, TIOCSCTTY, 1);
Run Code Online (Sandbox Code Playgroud)

连接回终端。然而,它实际上并没有执行这项工作。

以下解决方案描述了一个不太好但很实用的解决方案

tty 破乳

主要目的是将程序附加到另一个终端,但我相信这也是您实现目标的方式。

关于你提到的嵌入式平台,你也许可以从busybox找到一些帮助

它使用相当小的二进制文件为嵌入式 Linux 进行编译,并包含大多数常用的 Linux 实用程序,例如 getty、stty 等。