我正在使用fork(). 但是,在执行之前fork(),我打开了一个 用于写入的文件(比如a.txt) 。freopen现在子进程将输出重定向execlp到a.txt。终止子进程后,父进程关闭a.txt。现在父进程如何读取a.txt并显示一些信息stdout?
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 回答