相关疑难解决方法(0)

除非换行符在格式字符串中,为什么printf在调用后不会刷新?

printf除非换行符在格式字符串中,为什么在调用后不刷新?这是POSIX的行为吗?我怎么可能printf每次都立即冲洗?

c printf flush

509
推荐指数
10
解决办法
33万
查看次数

为什么write()在输出重定向中的printf()之前打印?

所以我知道printf()write()使用更高级别并且最终使用write().Printf()缓冲并write()进行系统调用.

例1,如果我在printf()之前运行程序,write()那么它将输出值printf()之前的值write().

例2,如果我要运行相同的程序并让它通过输出重定向到一个文件,write()输出的值之前printf().

#include <stdio.h>
#include <unistd.h>

int main()
{
    printf("This is a printf test\n");
    write(STDOUT_FILENO, "This is a write test\n", 21);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我不明白这里发生了什么.在示例1中,程序是否printf()在运行之前等待s输出write()?在示例2中,程序是否重定向准备好的第一个输出?而且因为write()是较低级别,并且不需要像那样缓冲printf()它首先打印?

c

5
推荐指数
1
解决办法
1642
查看次数

标签 统计

c ×2

flush ×1

printf ×1