OSX 10.10.3 上的 freopen()
freopen() on OSX 10.10.3
我有一个 C 程序,它生成一个 pthread 来充当交互式终端:从 stdin
读取行并对其执行操作。该程序充当一种 shell、fork
-ing 关闭进程;如此创建的每个进程在使用 exec
加载新的可执行文件之前使用对 freopen()
的调用重定向其 stdin
。
在启动交互线程之前,一切正常。一旦启动(或者,更具体地说,每当它等待输入时),对 freopen()
的调用就会挂起。有什么办法可以避免这个问题吗?
可以在 R. 对 Is close/fclose on stdin guaranteed to be correct?
的回答中找到适合我的解决方案
基本上,我们的想法是打开您要重定向到的文件,将其复制到标准输入,然后关闭刚刚打开的文件描述。
我有一个 C 程序,它生成一个 pthread 来充当交互式终端:从 stdin
读取行并对其执行操作。该程序充当一种 shell、fork
-ing 关闭进程;如此创建的每个进程在使用 exec
加载新的可执行文件之前使用对 freopen()
的调用重定向其 stdin
。
在启动交互线程之前,一切正常。一旦启动(或者,更具体地说,每当它等待输入时),对 freopen()
的调用就会挂起。有什么办法可以避免这个问题吗?
可以在 R. 对 Is close/fclose on stdin guaranteed to be correct?
的回答中找到适合我的解决方案基本上,我们的想法是打开您要重定向到的文件,将其复制到标准输入,然后关闭刚刚打开的文件描述。