1

如果我输入 myprogram > file 我最终会得到一个大小为 0 的文件,但有一次它工作时除外。相同的程序,在工作和不工作的时间之间没有变化。如果没有重定向,它会很好地打印到终端。几乎所有在线帮助都假定您需要重定向 std 错误,但这里并非如此。

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

我假设我需要在代码中做一些事情以允许重定向。这可能是我应该知道的简单事情,但我不知道。我会很感激一些帮助。

4

1 回答 1

2

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

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

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

您可以setvbuf(stdout, NULL, _IONBF, 0);一起禁用标准输出缓冲。

于 2014-11-25T22:10:20.130 回答