我有一个程序做了很多工作。我想将所有控制台打印记录到一个文件中。所以我在可执行文件中使用了tee。
我实现了一个tee,它从stdin读取并写入stdout和一个文件。
exec run.sh tee日志链接
但我能看到的是,我的程序登录时间过去是3分钟,现在是6分钟。
延误的原因是什么?我评论了tee的文件操作部分,仍然看到相同的延迟。是管道导致了这个问题吗?
添加代码,

char ch;
fd = open(file_name, O_WRONLY | O_APPEND, 0664);
while(read(STDIN_FILENO, &ch, 1) > 0)
{
    write(STDOUT_FILENO, &ch, 1); //write to console
    fflush(stdout);
    write(fd, &ch, 1); //write to the file
}

最佳答案

read(STDIN_FILENO, &ch, 1)

每次读取调用只读取1个字节。它非常慢,请增加缓冲区,每次读取调用都尽可能多地读取

关于c - 使用“tee”会使标准输出变慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34541929/

10-13 08:39