免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4552 | 回复: 11
打印 上一主题 下一主题

exit()与_exit() [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-08 11:36 |只看该作者 |倒序浏览
请问,这两个有什么不同。
有的说后者带下划线的退出不负责关闭一些打开的描述符。
也就是说使用后者会造成资源浪费。
那岂不是说如果我的程序频繁调用后者结束,无数次后,机器资源岂不耗尽了。
不知道是不是。
还有windows和Linux这两个函数是一样吗?

论坛徽章:
0
2 [报告]
发表于 2011-06-08 11:38 |只看该作者
之所以问这个问题,我是发现windows下,多线程程序,调用前者无法退出。调用后者就可以。
我是担心后者会出现资源没释放的问题。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2011-06-08 11:55 |只看该作者
主要是_exit不调用atexit等注册的函数

man:

       The  function  _exit() is like exit(), but does not call any functions registered with atexit() or on_exit().  Whether
       it flushes standard I/O buffers and removes temporary files created with tmpfile(3) is implementation  dependent.   On
       the  other  hand,  _exit()  does close open file descriptors, and this may cause an unknown delay, waiting for pending
       output to finish. If the delay is undesired, it may be useful to call functions like tcflush() before calling _exit().
       Whether  any  pending  I/O is cancelled, and which pending I/O may be cancelled upon _exit(), is implementation-depen-
       dent.

论坛徽章:
0
4 [报告]
发表于 2011-06-08 11:59 |只看该作者
主要是_exit不调用atexit等注册的函数

man:

       The  function  _exit() is like exit(), but do ...
hellioncu 发表于 2011-06-08 11:55



    会不会造成资源没释放呢?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
5 [报告]
发表于 2011-06-08 12:21 |只看该作者
会不会造成资源没释放呢?
urapple 发表于 2011-06-08 11:59



    进程自身反正要退出了,资源无所谓释放与否了。关键是有些你想让在退出前的事情没做。

论坛徽章:
0
6 [报告]
发表于 2011-06-08 18:10 |只看该作者
exit是C函数,_exit是系统调用

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:56:11
7 [报告]
发表于 2011-06-08 18:11 |只看该作者
程序都殺掉了,資源無所謂。

论坛徽章:
0
8 [报告]
发表于 2011-06-09 00:02 |只看该作者
不明白...

论坛徽章:
0
9 [报告]
发表于 2011-06-09 00:23 |只看该作者
楼上不明白可以闭嘴,不要灌水骗积分。草!

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
10 [报告]
发表于 2011-06-09 01:12 |只看该作者
两个应该都是库函数,最终调用exit系统调用,至于在此之前做什么,就如标准里说的那样。Windows与Linux的实现或许不同,但只要符合标准,对外表现出的行为应该是一致的。最后,进程结束了,就无所谓资源泄露了,不然操作系统还混啥?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP