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

标签 c linux terminal embedded-linux multiplexing

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

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

你知道我需要执行哪些调用(在 C 中)来分离程序并将其取回吗?

最佳答案

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

ioctl(0, TIOCNOTTY, NULL);

分离和

ioctl(0, TIOCSCTTY, 1);

附加回终端。但是,它实际上并没有执行这项工作。

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

tty demulsified

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

关于您提到的嵌入式平台,您可能可以从busybox中找到一些帮助。

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

关于c - 如何从终端分离程序并将其附加回去?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13137893/

相关文章:

linux - 在 sudo 命令中验证密码

linux - 在 bash 脚本中比较数字

linux - Bash if elif 和 else 在我的 linux 脚本中不起作用

c - 在 C 中使用 GnuTLS 生成 RSA key 对

c - 如何将结构的内容保存到 C 文件中?

c - GDB 中的段错误 "in ?? ()"

linux - 如何在 Linux shell 中对变量进行除法?

python - 我的 mac 终端无法运行 python 函数

macos - 如何从终端 (Mac OS X) 中查看文件/文件夹上的标签颜色

C 程序打印完整的金字塔