我有一个打印到终端输出的应用程序。
将其置于背景(带"&"(并按任意键时,例如按回车键 重新显示提示(只是为了检查当某些输出时我是否仍在 bash 中 从后台进程已显示(,后台进程似乎自发停止:
[1] Stopped (tty output) app
我知道这是因为过程得到SIGTTIN或SIGTTOU,这里可能是SIGTTIN,在printf等的情况下SIGTTOU。 所以我有两个问题:
1.我尝试从应用程序端处理它,只需阻止SIGTTOU和SIGTTIN,它对这种情况有帮助,我可以按shell中的任何键,但是当我在前台执行进程时-当然我所有的击键都被忽略了!!
那么,如何处理,以便它在 FG和BG 中工作???
也许将进程与终端和TTY分离,但是应用程序仍然可以打印到控制台吗?
2.一般来说,谁必须处理这些信号? 应用程序,或者应该在 tty 配置中处理。(停?
提前感谢!
1. 如何处理,让它在 fg 和 bg 中工作不好?
如果您的应用程序仅将输出打印到控制台,则 SIGTTIN 或 SIGTTOU 不会有问题。
在您的情况下,您的应用似乎将输出打印到控制台,并且需要来自控制台的输入。 如果应用必须打印输出并等待来自控制台的输入,则无法在 bg 中成功运行应用。
2. 谁必须处理这些信号?
通常,应用应处理这些信号。应选择SIG_DFL
(默认操作(、SIG_IGN
(忽略(或程序员定义的函数之一。