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就会有不同的结果出现,不知道是什么原因,还请指教
exit()与_exit()问题
-
- 帖子: 25
- 注册时间: 2011-04-21 10:06
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
Re: exit()与_exit()问题
exit 是 C 库函数
_exit 是系统调用
所以 _exit 不会刷掉流缓冲区的东西。。
_exit 是系统调用
所以 _exit 不会刷掉流缓冲区的东西。。
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
- 帖子: 25
- 注册时间: 2011-04-21 10:06
Re: exit()与_exit()问题
你好,我明白你的意思,但我运行程序2后是没有结果的,在printf后面加上\n后才会出现结果,我想问这和介绍的有出入是什么原因造成的?BigSnake.NET 写了:exit 是 C 库函数
_exit 是系统调用
所以 _exit 不会刷掉流缓冲区的东西。。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: exit()与_exit()问题
你的终端是行缓冲的——只缓冲一行。如果有换行符或者缓冲区满则立马输出。llxlf2012 写了: 你好,我明白你的意思,但我运行程序2后是没有结果的,在printf后面加上\n后才会出现结果,我想问这和介绍的有出入是什么原因造成的?
建议看看 UNIX环境高级编程。
- fanhe
- 帖子: 2357
- 注册时间: 2007-03-24 23:45
Re: exit()与_exit()问题
看啥书都是浮云啊, 如果你连man都不看
好像要装个软件包的
代码: 全选
man exit
man _exit