程序输出可以通过程序本身重定向到管道吗?

时间:2011-09-20 15:34:18

标签: c linux pipe filestream

这是关于比赛的计划。

我正在提交一个节目&在总执行速度方面,我发现我的指标比最高得分者慢。所有其他(页面错误,内存......)都很相似。我发现当我在没有printf(或写入)的程序中运行时,我的总执行速度(在我自己的电脑中测量)似乎相似。

竞争通过将输出(使用管道,我猜想)重定向到文件&来评估输出。匹配其MD5与他们的....

我的问题是,在C中是否有任何东西,它不会写入输出流,但管道仍然得到它的输入。或许我甚至将问题定为错误。但无论哪种方式,我都在修复。

我一直在优化算法。顺便说一句,他们接受许多人试图优化的makefile。对我来说,两个优化标志都没有奏效。我不知道还能做些什么......

2 个答案:

答案 0 :(得分:0)

您可以在管道fd上尝试fprintf。

答案 1 :(得分:0)

如果您需要创建一个将其输出写入文件的程序,您只需要:

  • 使用int fd = fopen("/file/path", O_WRONLY);打开文件(您可能需要检查参数,自从我完成C编程以来已经很长时间了)然后write(fd, ...);fprintf(fd, ...);
  • 使用fopen打开文件,关闭标准输出并使用dup2()将文件描述符复制到文件描述符编号1(即标准输出)。