我在使用 C 中的 printf 函数时遇到问题。它只是不打印输出,尽管禁用了缓冲:
setbuf(stdout, NULL);
和
setvbuf(stdout, NULL, _IONBF, 0);
我也在用fflush(stdout);
,但还是不行。
这是确切的代码:
int setup(){
//...
printf("Setup successful\n");
fflush(stdout);
return 0;
}
int main(int argc, char *argv[]){
setbuf(stdout, NULL);
setvbuf(stdout, NULL, _IONBF, 0);
setup();
//...
)
如果信息有帮助;我在 Linux(树莓派)上。
提前致谢!
最佳答案
我已尝试尽可能接近地重现您的设置。因此,我在 VirtualBox 镜像中安装了 Raspbian(树莓派操作系统),并使用 Geany 创建、编译和执行 C 文件。这是完整的代码:
#include <stdio.h>
int main() {
printf("Setup successful\n");
}
如您所见,此代码正确编译、执行并打印了消息。不需要显式刷新 ( printf
to stdout automatically flushes when encountering a newline character )。此行为已标准化并由 Raspbian 安装的工具正确实现,因此非常可靠。
关于c - 尽管禁用了缓冲,但 Printf 没有立即打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50350334/