C exit()和_exit()的输出不同?
为什么它显示出不同的输出???谁能给我详细解释一下 一, 输出: 正在使用退出。。。 这是缓冲区中的内容 二, 仅输出: 正在使用退出 如果我们阅读_exit的文档,我们会注意到: 导致正常程序终止,而不完全清理资源C exit()和_exit()的输出不同?,c,unix,exit,C,Unix,Exit,为什么它显示出不同的输出???谁能给我详细解释一下 一, 输出: 正在使用退出。。。 这是缓冲区中的内容 二, 仅输出: 正在使用退出 如果我们阅读_exit的文档,我们会注意到: 导致正常程序终止,而不完全清理资源 这可能包括刷新stdout。您应该知道的第一件事是stdout是行缓冲的,这意味着它在获取“\n”后刷新内存。第二件事是exit刷新stdio缓冲区,而_exit不会 现在在您的例子中,在第一个示例中,exit刷新stdio缓冲区,因此它正在打印两个printf输出,而在_exit
这可能包括刷新stdout。您应该知道的第一件事是stdout是行缓冲的,这意味着它在获取“\n”后刷新内存。第二件事是exit刷新stdio缓冲区,而_exit不会 现在在您的例子中,在第一个示例中,exit刷新stdio缓冲区,因此它正在打印两个printf输出,而在_exit中没有刷新,因此它不会同时打印两个printf语句 如果要在第二条语句中获得正确的输出,请禁用缓冲 把
int main (void)
{
setbuf(stdout, NULL);
printf ("Using exit ... \ n");
printf ("This is the content in buffer");
_exit (0);
}
可能重复或可能重复
# Include <unistd.h>
# Include <stdio.h>
int main (void)
{
printf ("Using exit ... \ n");
printf ("This is the content in buffer");
_exit (0);
}
int main (void)
{
setbuf(stdout, NULL);
printf ("Using exit ... \ n");
printf ("This is the content in buffer");
_exit (0);
}