Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 每个分叉过程的不同输入/输出流_C_Fork_Popen_Stdio - Fatal编程技术网

C 每个分叉过程的不同输入/输出流

C 每个分叉过程的不同输入/输出流,c,fork,popen,stdio,C,Fork,Popen,Stdio,我有一些代码,其中几个进程是通过分叉创建的。每个进程都有popen()函数来执行一些shell命令。问题是所有这些进程都使用相同的输入/输出流。这会导致由于进程同时写入一个流而发生冲突的情况 有没有办法解决这个问题,让每个分叉的进程都使用自己的流? 在我的情况下,不允许对fork进行任何操作。您必须在fork之前或(如果可能)在fork之后的子进程中关闭并重新打开stdin和stdout。您必须在fork之前或(如果可能)在fork之后的子进程中关闭并重新打开stdin和stdout。调用for

我有一些代码,其中几个进程是通过分叉创建的。每个进程都有popen()函数来执行一些shell命令。问题是所有这些进程都使用相同的输入/输出流。这会导致由于进程同时写入一个流而发生冲突的情况

有没有办法解决这个问题,让每个分叉的进程都使用自己的流?
在我的情况下,不允许对fork进行任何操作。

您必须在fork之前或(如果可能)在fork之后的子进程中关闭并重新打开stdin和stdout。

您必须在fork之前或(如果可能)在fork之后的子进程中关闭并重新打开stdin和stdout。

调用fork()时,您从父进程继承文件描述符(stdin、stdout等)。当您打开它时,它将获取共享的stdin/stdout并将其导入打开的进程。听起来您希望在分叉后关闭所有打开的文件描述符,然后重新打开它们

调用fork()时,从父进程继承文件描述符(stdin、stdout等)。当您打开它时,它将获取共享的stdin/stdout并将其导入打开的进程。听起来您希望在分叉后关闭所有打开的文件描述符,然后重新打开它们

请出示一些代码,它不清楚你的意思。请出示一些代码,它不清楚你的意思。