为什么它显示不同的输出???任何人都可以深入解释我。
1
#include <stdlib.h>
#include <stdio.h>
int main (void)
{
printf ("Using exit ... \ n");
printf ("This is the content in buffer");
exit (0);
}
输出:
使用退出... 这是缓冲区中的内容
2
# Include <unistd.h>
# Include <stdio.h>
int main (void)
{
printf ("Using exit ... \ n");
printf ("This is the content in buffer");
_exit (0);
}
仅输出:
使用退出...
答案 0 :(得分:2)
如果我们阅读了_exit()
的文档,我们会注意到:
在没有完全清理资源的情况下导致正常的程序终止。
这可能包括冲洗stdout。
答案 1 :(得分:0)
你应该知道的第一件事是STDOUT是行缓冲的,意味着它在获得'\ n'后刷新内存。第二件事是exit()刷新stdio缓冲区,而_exit()则不会。
现在在你的情况下,在第一个例子中,exit()刷新stdio缓冲区,所以它在_exit()中打印两个printf输出,没有发生刷新,所以它不打印两个printf语句。
如果要在第二个语句上获得正确的输出,请禁用缓冲 通过推荐
int main (void)
{
setbuf(stdout, NULL);
printf ("Using exit ... \ n");
printf ("This is the content in buffer");
_exit (0);
}