在编写 ac 程序时,我遇到了 printf 和 write 的一个令人费解的行为。似乎在某些情况下 write 是在 printf 之前调用的,即使它在代码中是在它之后(printf 是异步的吗?)。此外,如果 printf 中有两行,则之后的输出似乎插入在它们之间。我的问题是什么导致了这种行为,我怎么知道什么时候会发生什么?其他输出函数(例如 puts)呢?我可以在文档中查找某些内容以了解它们与其他函数的行为方式。示例代码:
#include <unistd.h>
#include <stdio.h>
int main(void)
{
write(STDOUT_FILENO, "1.", 2);
printf("2.");
write(STDOUT_FILENO, "3.", 2);
printf("4.\n5.");
printf("6.");
write(STDOUT_FILENO, "7.", 2);
return 0;
}
输出:
1.3.2.4.
7.5.6.