尽管禁用了缓冲,但 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");
}
  1. 将此文件另存为 test.c:

  2. 接下来,点击“构建”(砖块图标):

  3. 最后,运行它(点击纸飞机图标):

如您所见,此代码正确编译、执行并打印消息。无需显式刷新 (printf to stdout automatically flushes when encountering a newline character)。此行为已由 Raspbian 安装的工具标准化并正确实施,因此它是可靠的。