嗯,这是关于竞赛的计划。
我正在提交一个程序,发现我的指标在总执行速度方面比得分最高的人要慢得多。所有其他(页面错误、内存...)都是类似的。我发现当我在没有 printf(或 write)的情况下运行我的程序时,我的总执行速度(在我自己的电脑上测量)似乎相似。
比赛通过将输出(我想是用管道)重定向到一个文件并将其 MD5 与他们的 MD5 进行匹配来评估输出......
我的问题是,C 中是否有某种东西不会写入输出流,但管道仍然会获取其输入。或者也许我什至错误地提出了这个问题。但无论如何,我都陷入了困境。
我一直在努力优化算法。顺便说一句,他们接受许多人试图优化的 makefile。对我来说,这两个优化标志都不起作用。我也不知道还能做什么......
最佳答案
如果您需要编写一个将其输出写入文件的程序,您只需:
- 用
int fd = fopen("/file/path", O_WRONLY);打开文件
(可能需要检查一下参数,好久没做C编程了),然后write(fd, ...);
或fprintf(fd, ...);
- 使用fopen打开文件,关闭标准输出并使用
dup2()
将文件描述符复制到文件描述符编号1(即标准输出)。
关于程序输出可以通过程序本身重定向到管道吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7487785/