如果我输入myprogram > file,我将得到一个大小为0的文件,除非有一次它正常工作。相同的程序,在工作和不工作的时间之间没有变化。没有重定向,它打印到终端只是很好的。实际上,所有在线帮助都假定您需要重定向std错误,但这里不是这样的。
该程序是多线程的,读取USB端口并将其写入蓝牙端口。没有键盘输入,也没有出口,它只是运行。我用ctrl-c来阻止它。这是在无头linux英特尔爱迪生上嵌入的代码。
我想我需要在代码中做一些事情来允许重定向。这可能是一件简单的事情,我应该知道,但我不知道。我会感谢一些帮助。
发布于 2014-11-25 14:10:20
当重定向到文件时,libc将自动缓冲数据。
由于您杀死了您的脚本而不是优雅地退出,所以在它写入缓冲区之前停止该进程。
您可以使用fflush(stdout);
在任何时候写出(也称为刷新)当前缓冲区。
您可以使用setvbuf(stdout, NULL, _IONBF, 0);
来禁用stdout缓冲区。
https://stackoverflow.com/questions/27137569
复制相似问题