我正在使用fork()
。但是,在执行fork()
之前,我使用freopen
打开一个文件(比如a.txt
)进行写入。现在子进程将execlp
的输出重定向到a.txt
。在终止子进程后,父进程关闭a.txt
。现在,父进程如何读取a.txt
并在stdout
中显示一些信息?想要在关闭使用freopen打开的文件后写入标准输出
0
A
回答
1
如果父进程与freopen(3)
打开该文件,然后rewind(3)
库调用可用于流的指针重新缠绕到文件的开始,为使用fread(3)
或fgets(3)
或你想要的任何API使用。
1
freopen
根本不属于此代码。相反,你应该这样做:
FILE *tmp = tmpfile();
if (!(pid=fork())) {
dup2(fileno(tmp), 1);
close(fileno(tmp));
execlp(...);
_exit(1);
}
wait(&status);
/* read from tmp */
但是它实际上是好多了,如果可以使用管。
相关问题
- 1. 关闭然后在Linux下打开C标准输入
- 2. 关闭它们后重新打开标准输出和标准输入文件描述符
- 3. 关闭与标准输出文件被写入到它
- 4. Python使用标准输出和文件输入写入文件
- 5. 使lftp写入标准输出而不必先关闭进程
- 6. C#关闭标准输出
- 7. 打开Windows控制台的标准输入/标准输出/标准输入/输出为win32和win64在C
- 8. 如何在打开之后敲定写入/关闭写入
- 9. 如何打开要写入的文件,写入新信息,然后关闭文件?
- 10. 替换,然后通过SSH打开标准输入/标准输出
- 11. 斯卡拉开放写入到标准输出或文件
- 12. 在写入文件后打开文件
- 13. 打开文件,打印到标准输出,追加到文件,并再次打印到标准输出
- 14. Maven写入标准输出
- 15. 写入标准输出
- 16. 写入到标准输出VS写入文件
- 17. 将标准输入写入文件
- 18. 使用C关闭打开的文件
- 19. 输出后关闭标题
- 20. 以输入从标准输入freopen函数()
- 21. 要在Excel上写入的SQL的输出在标准路径
- 22. 在内联“打开和写入文件”是关闭()隐式?
- 23. 关闭标准输入输出和错误的ptunnel方式
- 24. 使Rails.logger tee写入标准输出
- 25. 关闭读取文件并打开才能写出搜索结果字符串输出文件再次要求
- 26. 输出文件到标准输入
- 27. 写入输出流3(标准输出或标准错误)
- 28. 如何在Windows中使用Python打开文件后关闭cmd?
- 29. 写入标准输出并从标准输入读取C
- 30. 应该“freopen'ed”标准输出关闭?
@ sarnold:但我无法写入'stdout'。 – miraj
@miraj,aha;我认为R ..比我更了解你的问题。您是否在写入孩子的文件时遇到麻烦?或者从父文件读取问题? – sarnold
孩子可以完美写作。问题在于读取文件并由父级写入标准输出。 – miraj