Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C exit()和_exit()的输出不同?_C_Unix_Exit - Fatal编程技术网

C exit()和_exit()的输出不同?

C exit()和_exit()的输出不同?,c,unix,exit,C,Unix,Exit,为什么它显示出不同的输出???谁能给我详细解释一下 一, 输出: 正在使用退出。。。 这是缓冲区中的内容 二, 仅输出: 正在使用退出 如果我们阅读_exit的文档,我们会注意到: 导致正常程序终止,而不完全清理资源 这可能包括刷新stdout。您应该知道的第一件事是stdout是行缓冲的,这意味着它在获取“\n”后刷新内存。第二件事是exit刷新stdio缓冲区,而_exit不会 现在在您的例子中,在第一个示例中,exit刷新stdio缓冲区,因此它正在打印两个printf输出,而在_exit

为什么它显示出不同的输出???谁能给我详细解释一下

一,

输出:

正在使用退出。。。 这是缓冲区中的内容

二,

仅输出:

正在使用退出

如果我们阅读_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);
}