关闭stdout和脚本

时间:2012-05-14 07:25:55

标签: c++ stdout

我有两个用C ++编写的进程,一个接一个地传输。一个人向其他人stdin提供一些信息,然后他们继续做其他事情。

问题是第二个进程在cin.getline()内挂起,即使没有更多数据需要交换。解决方案是针对fclose(stdout)的第一个进程,这是有效的,除非我使用脚本中包含的进程。显然,脚本的stdout在通过该过程关闭之后仍然是打开的 - 这看起来很公平,但在我的情况下,我可以关闭它吗?感谢

1 个答案:

答案 0 :(得分:0)

由于您的程序没有终止,您可以在脚本中exec your-program而不是your-program并在管道的写入端保存一个打开的文件描述符(以及其他一些东西)

或者,在后台启动您的程序并退出脚本。

您也可以关闭标准输出,但如果在启动程序之前执行此操作,则无法使用已关闭的文件描述符。所以你必须在程序运行时关闭它。这并非完全无足轻重。我可以考虑在后台启动程序,关闭标准输出(使用exec 1>&-)并将程序带回前台。