分页: 1 / 1

exit()与_exit()问题

发表于 : 2011-06-03 15:13
llxlf2012
http://hi.baidu.com/icoky/blog/item/85b ... f31cf.html 在上述链接里(大部分网上对exit()和_exit())都列举了下面两段程序
(1)#include<stdlib.h>
main()
{
printf ("output begin");
printf ("content in buffer");
exit(0);
}
$gcc exit2.c -o exit2
$./exit2
output begin
content in buffer
(2)#include<unistd.h>
main()
{
printf("output begin");
printf("content in buffer");
_exit(0);
}
$gcc _exit1.c -o _exit1
$./_exit1
output begin
但是我在我的ubuntu上试了下,程序1没有什么大问题,但程序2如果就是按照上述去编译运行后是不会出现printf的结果,但在printf后加上\n就会有不同的结果出现,不知道是什么原因,还请指教

Re: exit()与_exit()问题

发表于 : 2011-06-03 15:23
BigSnake.NET
exit 是 C 库函数
_exit 是系统调用

所以 _exit 不会刷掉流缓冲区的东西。。

Re: exit()与_exit()问题

发表于 : 2011-06-03 15:58
llxlf2012
BigSnake.NET 写了:exit 是 C 库函数
_exit 是系统调用

所以 _exit 不会刷掉流缓冲区的东西。。
你好,我明白你的意思,但我运行程序2后是没有结果的,在printf后面加上\n后才会出现结果,我想问这和介绍的有出入是什么原因造成的?

Re: exit()与_exit()问题

发表于 : 2011-06-04 17:31
lilydjwg
llxlf2012 写了: 你好,我明白你的意思,但我运行程序2后是没有结果的,在printf后面加上\n后才会出现结果,我想问这和介绍的有出入是什么原因造成的?
你的终端是行缓冲的——只缓冲一行。如果有换行符或者缓冲区满则立马输出。
建议看看 UNIX环境高级编程。

Re: exit()与_exit()问题

发表于 : 2011-06-06 19:45
fanhe
看啥书都是浮云啊, 如果你连man都不看

代码: 全选

man exit
man _exit
好像要装个软件包的