免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: hncw13
打印 上一主题 下一主题

程序退出缓慢的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-07-15 14:47 |只看该作者

回复 #10 hncw13 的帖子

应该不是这个问题,我在程序中没有用到注册函数;并且我注释掉了引用的其他.a库,退出缓慢的问题依然存在。

论坛徽章:
0
12 [报告]
发表于 2009-07-15 17:43 |只看该作者
看你的代码明显是return 0后执行资源清理时阻起了嘛, 而不是在return 0之前阻起了

论坛徽章:
0
13 [报告]
发表于 2009-07-15 21:19 |只看该作者
原帖由 bobozhang 于 2009-7-15 17:43 发表
看你的代码明显是return 0后执行资源清理时阻起了嘛, 而不是在return 0之前阻起了



那么怎么才能知道是哪里消耗的时间呢,我用strace命令没有看到什么系统调用?

论坛徽章:
0
14 [报告]
发表于 2009-07-15 21:26 |只看该作者
实在不行,就把你的代码一部分一部分的注释掉,知道退出时不阻塞了,就知道问题在哪段代码了。

论坛徽章:
0
15 [报告]
发表于 2009-07-15 21:42 |只看该作者
用exit()代替return试试!

论坛徽章:
0
16 [报告]
发表于 2009-07-15 22:29 |只看该作者
用_exit()或者_Exit()替代return试一下就知道是不是由于注册的atexit()阻的了.

论坛徽章:
0
17 [报告]
发表于 2009-07-16 11:28 |只看该作者
原帖由 daniel126 于 2009-7-15 22:29 发表
用_exit()或者_Exit()替代return试一下就知道是不是由于注册的atexit()阻的了.



我使用_Exit(0)代替return 0,程序很快就退出了。 但是我还是没有找到程序中哪里通过atexit()注册了处理函数。

如果我自己申请的资源,在退出的时候都显示地进行了释放,是不是就可以用_Exit(0)代替return 0使用呢? 谢谢。

论坛徽章:
0
18 [报告]
发表于 2009-07-16 12:16 |只看该作者
原帖由 hncw13 于 2009-7-16 11:28 发表



我使用_Exit(0)代替return 0,程序很快就退出了。 但是我还是没有找到程序中哪里通过atexit()注册了处理函数。

如果我自己申请的资源,在退出的时候都显示地进行了释放,是不是就可以用_Exit(0)代替re ...



是c的还是c++的, 如果是c++的, return 会call你申请的对象的destroy函数, 也许你的某个destroy函数里, 有block操作, 例如join thread之类的。


如果是exit, 就不会了, 直接退出。

论坛徽章:
0
19 [报告]
发表于 2009-07-16 14:04 |只看该作者
原帖由 hlxxxx 于 2009-7-16 12:16 发表



是c的还是c++的, 如果是c++的, return 会call你申请的对象的destroy函数, 也许你的某个destroy函数里, 有block操作, 例如join thread之类的。


如果是exit, 就不会了, 直接退出。



我的程序是c/c++混用的,makefile里面用的是g++;
不过我能确定我自己申请的资源,都会被显示地释放掉的。

论坛徽章:
0
20 [报告]
发表于 2009-07-16 14:22 |只看该作者
有没有全局变量,特别是全局对象,0,1,2这三个文件描述符有没有什么特别
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP