【发布时间】:2018-05-15 12:33:43
【问题描述】:
我在 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(树莓派)上。
提前致谢!
【问题讨论】:
-
如果您希望得到答案,您需要显示代码的minimal reproducible example。
-
"函数 setvbuf() 成功时返回 0。失败时返回非零(模式无效或请求无法被接受)。失败时可能会设置 errno。"
-
您是否在执行开始时/在任何其他 printf 调用之前将流设置为无缓冲? -“setvbuf() 函数只能在打开流之后和对其执行任何其他操作之前使用。” setbuf() 也是如此。
-
发布minimal reproducible example 会有所帮助。目前尚不清楚为什么没有发布完整的可编译代码并附有悬赏问题。
-
@itzFlubby 不要描述代码,显示代码。描述代码说“这基本上是我告诉计算机要做的”。问题是,计算机不会“基本上”按照你告诉他们的去做。他们完全地按照你告诉他们的去做。因此,请确切地告诉我们您要告诉计算机做什么,即将代码显示为 minimal reproducible example,其他人可以编译和运行以复制您的问题。
标签: c linux printf buffer raspberry-pi3