我正在研究一个拥有多个 C++ 执行程序的项目,该程序使用命名的管道进行通信。 主应用程序( App1) 生成其他应用程序。 当产卵时, 它关闭了给孩子使用的 < code> STDIN :
close(STDIN_FILENO);
它将 STDOUT
和 STDERR
重定向到与子进程相关的其它文件。 这使得 App1 的输出成为 App1 的 < em> only em>, 没有孩子。 它还允许 App1 接受 < code> STDIN 的输入, 而不让它被子进程捕获 。
儿童进程之一是 Qt 应用程序。 产卵后, 它会尽可能多地使用CPU, 使我的计算机速度大大减慢。 如果我不关闭儿童进程 < code> STDIN , 这个行为会停止( 但是孩子们会捕捉到 < code> STDIN , 而不是我不希望的主要进程 ) 。
为什么会发生这种情况, 我怎样才能阻止 Qt 应用程序使用所有 CPU 周期?