【发布时间】:2013-05-18 20:41:29
【问题描述】:
所以这可能是一个愚蠢的问题,但我看不出我做错了什么。
我正在运行一个程序,当像./ar 这样调用时会产生输出。输出如下:
-0.00781 0.02344 0.98828
-0.01172 0.02734 0.98828
-0.01562 0.02344 0.98047
-0.00781 0.02344 1.00000
-0.00391 0.02344 0.98438
每秒写入一个新的输出行。
当我调用这样的代码 ./ar > log 并在几秒钟后使用 ctrl-c 杀死程序时,文件 log 是空的。
我在嵌入式系统上运行此代码。系统有一个可写分区,这是我正在运行的分区,并且我以 root 身份登录时具有写访问权限。
【问题讨论】:
-
重定向时,输出是块缓冲的,而不是行缓冲的。如果您在一个块已满之前按 Ctrl-C,则不会将任何内容写入文件。您可以使用
fflush(stdout)使其立即写入文件。 -
谢谢,这解决了我的问题,我必须在每个 printf 语句之前运行这一行。
-
在
printf之后做更自然。