【发布时间】:2015-06-22 19:41:25
【问题描述】:
我有一个 C 程序,每 10 毫秒将 3 行写入标准输出。如果我将输出重定向到文件(使用 > ),程序运行将有很长的延迟(60 毫秒)。延迟是周期性的(比如每 5 秒一次)。
如果我只是让它写入控制台或重定向到/dev/null,没有问题。
我怀疑这是标准输出缓冲区的问题,但使用 fflush(stdout) 并没有解决问题。
我该如何解决这个问题?
【问题讨论】:
-
既然是用来做日志的,我可以用非阻塞文件来做这个吗?
-
linux 不是实时操作系统,延迟是不可避免的,尤其是写入磁盘时。
-
@user3386109 ,当然,但我想避免这种记录延迟。我已经从内核中屏蔽了 CPU 内核并将我的进程固定到内核。我现在的问题是这个 IO
-
那么我建议使用共享内存将输出传输到在不同内核上运行的进程,然后让该进程将其写入磁盘。
标签: c performance