如何检测进程是否与C++中的Linux终端分离?[复制]

How to detect if process is detached from Linux terminal in C++? [duplicate]

提问人:Kamehameha Pierwszy 提问时间:10/23/2023 更新时间:10/23/2023 访问量:47

问:

我有一个在 Linux Ubuntu 上运行的编译C++程序。该程序每秒清除终端并打印一些新的测量数据。 但是,在某些情况下,我想用“&”运行这个程序以继续在当前终端中工作。 有没有办法在 C++ 中检测程序是否在分离模式下运行并停止清除和打印?

我在想,也许我可以抓住“&”作为一个参数,但我的程序有不同数量的参数,这些参数将来可能会增长,所以这似乎不是一个优雅的解决方案。

C++ Linux 终端

评论

1赞 Some programmer dude 10/23/2023
shell 在后台运行不会将程序与终端“分离”。程序仍连接到终端,否则输出将不起作用。我不知道如何处理输入。您可以使用 isatty(STDIN_FILENO) 来检查它的状态?&
0赞 gerum 10/23/2023
你不能把 & 作为输入,但你可以额外将输出重定向到有 >> 的地方。因此,您不再使用输出。
0赞 Some programmer dude 10/24/2023
如果您确实想从终端中分离命令,请不仅在后台运行它,还可以使用 nohup 命令运行它,并将输入和输出从 和 重定向到 。/dev/null

答: 暂无答案