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