尽管禁用了缓冲,但 Printf 没有立即打印
Printf not printing immediately, although buffering is disabled
我在使用 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 (raspberry Pi).
提前致谢!
我已尝试尽可能接近地重现您的设置。因此,我在 VirtualBox 映像中安装了 Raspbian(Raspberry Pi 操作系统),并使用 Geany 创建、编译和执行 C 文件。这是完整的代码:
#include <stdio.h>
int main() {
printf("Setup successful\n");
}
将此文件另存为 test.c
:
接下来,点击“构建”(砖块图标):
最后,运行它(点击纸飞机图标):
如您所见,此代码正确编译、执行并打印消息。无需显式刷新 (printf
to stdout automatically flushes when encountering a newline character)。此行为已由 Raspbian 安装的工具标准化并正确实施,因此它是可靠的。
我在使用 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 (raspberry Pi).
提前致谢!
我已尝试尽可能接近地重现您的设置。因此,我在 VirtualBox 映像中安装了 Raspbian(Raspberry Pi 操作系统),并使用 Geany 创建、编译和执行 C 文件。这是完整的代码:
#include <stdio.h>
int main() {
printf("Setup successful\n");
}
将此文件另存为
test.c
:接下来,点击“构建”(砖块图标):
最后,运行它(点击纸飞机图标):
如您所见,此代码正确编译、执行并打印消息。无需显式刷新 (printf
to stdout automatically flushes when encountering a newline character)。此行为已由 Raspbian 安装的工具标准化并正确实施,因此它是可靠的。