我正在使用fork()
. 但是,在执行之前fork()
,我打开了一个 用于写入的文件(比如a.txt
) 。freopen
现在子进程将输出重定向execlp
到a.txt
。终止子进程后,父进程关闭a.txt
。现在父进程如何读取a.txt
并显示一些信息stdout
?
问问题
709 次
2 回答
1
如果父进程使用 来打开文件freopen(3)
,则rewind(3)
库调用可用于将流的指针重新缠绕到文件的开头,以便与您想使用的 API 或任何 API 一起使用fread(3)
。fgets(3)
于 2011-06-27T23:13:11.630 回答
1
freopen
根本不属于此代码。相反,您应该执行以下操作:
FILE *tmp = tmpfile();
if (!(pid=fork())) {
dup2(fileno(tmp), 1);
close(fileno(tmp));
execlp(...);
_exit(1);
}
wait(&status);
/* read from tmp */
但是,如果可能的话,使用管道实际上会好得多。
于 2011-06-27T23:13:43.203 回答