2011-06-27 39 views
0

我正在使用fork()。但是,在执行fork()之前,我使用freopen打开一个文件(比如a.txt)进行写入。现在子进程将execlp的输出重定向到a.txt。在终止子进程后,父进程关闭a.txt。现在,父进程如何读取a.txt并在stdout中显示一些信息?想要在关闭使用freopen打开的文件后写入标准输出

回答

1

如果父进程与freopen(3)打开该文件,然后rewind(3)库调用可用于流的指针重新缠绕到文件的开始,为使用fread(3)fgets(3)或你想要的任何API使用。

+0

@ sarnold:但我无法写入'stdout'。 – miraj

+0

@miraj,aha;我认为R ..比我更了解你的问题。您是否在写入孩子的文件时遇到麻烦?或者从父文件读取问题? – sarnold

+0

孩子可以完美写作。问题在于读取文件并由父级写入标准输出。 – miraj

1

freopen根本不属于此代码。相反,你应该这样做:

FILE *tmp = tmpfile(); 
if (!(pid=fork())) { 
    dup2(fileno(tmp), 1); 
    close(fileno(tmp)); 
    execlp(...); 
    _exit(1); 
} 
wait(&status); 
/* read from tmp */ 

但是它实际上是好多了,如果可以使用

相关问题