c-Ncurses在置于后台时停止进程 问题:
Ncurses屏幕初始化会导致发送到后台的进程停止,只有在返回前台时才会恢复 问题:c-Ncurses在置于后台时停止进程 问题:,c,linux,background-process,jobs,ncurses,C,Linux,Background Process,Jobs,Ncurses,Ncurses屏幕初始化会导致发送到后台的进程停止,只有在返回前台时才会恢复 问题: 是否可以让使用ncurses进行显示的进程仍在后台运行 是否有一种方法可以让流程自检它是否在后台运行,并在前台调用initialize ncurses,在发送回后台时结束它(并可能根据需要重复此操作) 笔记: 我只希望在进程在前台运行时更新显示 当进程处于后台时,不需要显示更新 非常感谢您的帮助 状态更新 2013/07/17 查看ncurses文档,了解initscr()在发送到后台时导致程序中
- 是否可以让使用ncurses进行显示的进程仍在后台运行
- 是否有一种方法可以让流程自检它是否在后台运行,并在前台调用initialize ncurses,在发送回后台时结束它(并可能根据需要重复此操作)
- 我只希望在进程在前台运行时更新显示
- 当进程处于后台时,不需要显示更新
非常感谢您的帮助
状态更新 2013/07/17
- 查看ncurses文档,了解initscr()在发送到后台时导致程序中断的原因
- 研究过程状态的检测
但是:如果您想在后台运行一些ncurses程序,您可以使用几乎所有Linux发行版中的screen。在分离的屏幕中运行您的进程,然后重新连接“screen-r-D”或类似功能。您希望它在后台运行,但仍然更新显示?你打算如何与shell交互?我只想在进程在前台运行时更新显示。你能想到你曾经使用过的任何其他程序都能以你想要的方式运行吗?如果不是,那是个坏兆头。您可以通过比较
tcgetpgrp(…)
和getpgrp()
来确定您是否处于后台,但我想不出一种方法来确保信息在所有更改中都保持最新。您如何将其置于后台?我不是专家,但它不是信号生成的吗?也许可以发现,然后执行一些操作,如endwin()
SIGTTIN 21,21,26 Stop tty input for background process
SIGTTOU 22,22,27 Stop tty output for background process