C++ Linux - 后台进程在键盘按键处停止



我有一个打印到终端输出的应用程序。
将其置于背景(带"&"(并按任意键时,例如按回车键 重新显示提示(只是为了检查当某些输出时我是否仍在 bash 中 从后台进程已显示(,后台进程似乎自发停止:

[1] Stopped (tty output) app

我知道这是因为过程得到SIGTTIN或SIGTTOU,这里可能是SIGTTIN,在printf等的情况下SIGTTOU。 所以我有两个问题:
1.我尝试从应用程序端处理它,只需阻止SIGTTOU和SIGTTIN,它对这种情况有帮助,我可以按shell中的任何键,但是当我在前台执行进程时-当然我所有的击键都被忽略了!!
那么,如何处理,以便它在 FGBG 中工作???
也许将进程与终端和TTY分离,但是应用程序仍然可以打印到控制台吗?

2.一般来说,谁必须处理这些信号? 应用程序,或者应该在 tty 配置中处理。(停?

提前感谢!

1. 如何处理,让它在 fg 和 bg 中工作不好?

如果您的应用程序仅将输出打印到控制台,则 SIGTTIN 或 SIGTTOU 不会有问题。

在您的情况下,您的应用似乎将输出打印到控制台,并且需要来自控制台的输入。 如果应用必须打印输出并等待来自控制台的输入,则无法在 bg 中成功运行应用。

2. 谁必须处理这些信号?

通常,应用应处理这些信号。应选择SIG_DFL(默认操作(、SIG_IGN(忽略(或程序员定义的函数之一。

最新更新