输出文件重定向(几乎)永远不能在我的Linux程序中使用

时间:2014-11-25 22:02:13

标签: c linux io intel-edison

如果我输入myprogram>文件我最终得到一个大小为0的文件,除了它工作的一次。相同的程序,它工作的时间和不工作的时间之间没有变化。没有重定向,它打印到终端就好了。实际上,所有在线帮助都假定您需要重定向标准错误,但这不是这种情况。

程序是多线程的,读取USB端口并将其写入蓝牙端口。没有键盘输入也没有退出,它只是运行。我用ctrl-c来阻止它。这是无头Linux英特尔爱迪生的嵌入式代码。

我假设我需要在代码中执行某些操作以允许重定向。这可能是我应该知道的简单但我不知道。我将不胜感激。

1 个答案:

答案 0 :(得分:2)

当您重定向到文件时,libc会自动缓冲您的数据。

由于您终止了脚本而不是正常退出,因此在将缓冲区写出之前停止该过程。

您可以随时使用fflush(stdout);写出(也就是刷新)当前缓冲区。

您可以使用setvbuf(stdout, NULL, _IONBF, 0);一起禁用stdout缓冲。