我正在开发一个项目,该项目具有多个使用命名管道进行通信的 C++ 可执行文件。主应用程序 (App1) 产生其余的应用程序。STDIN
产卵时,它会为孩子们关闭:
close(STDIN_FILENO);
它会重定向STDOUT
到STDERR
特定于子进程的其他文件。这使得 App1 的输出仅来自 App1 而没有子级。它还允许 App1 接受来自STDIN
子进程的输入,而不是让它被子进程捕获。
其中一个子进程是 Qt 应用程序。生成时,它会使用尽可能多的 CPU,从而大大降低了我的计算机速度。如果我不关闭STDIN
子进程,则此行为停止(但子进程捕获STDIN
而不是主进程,这是我不想要的)。
为什么会发生这种情况,如何防止 Qt 应用程序使用所有 CPU 周期?