免费注册 查看新帖 |

Chinaunix

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

[进程管理] linux求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-28 16:44 |只看该作者 |倒序浏览
进程退出,请教是否给操作系统发送信号,发送的话发送什么信号,另外我可以通过系统函数在退出前捕获堆栈信息么?可以的话是什么系统函数,谢谢!

论坛徽章:
0
2 [报告]
发表于 2012-09-28 20:29 |只看该作者
进程退出,请教是否给操作系统发送信号,发送的话发送什么信号,

如果是子进程,可以发sig_child.
如果只是一个进程,可以使用 atexit函数,进行操作,
http://blog.csdn.net/huhaihong/article/details/2189709


另外我可以通过系统函数在退出前捕获堆栈信息么?可以的话是什么系统函数,谢谢!

这个就是用 backtrace
列子
[url=]http://blog.sina.com.cn/s/blog_40d608bb0100uu5e.html[/url]

ok,我的解答如上


论坛徽章:
0
3 [报告]
发表于 2012-09-28 20:39 |只看该作者
进程退出时向父进程发送信号,SIGCHILD

论坛徽章:
0
4 [报告]
发表于 2012-09-29 09:25 |只看该作者
lz有个问题没明白, 信号的发送源应该归属操作系统, 严格的说就是kernel,进程在退出时这个事件是kernel可知的,kernel向进程的父进程发送一个SIGCHLD的信号。
在进程退出时打印出堆栈的方法有很多种, 一种就是用gdb设断点在_exit()系统调用这, 然后用bt, 如果是非正常退出,内核是应该有一些信号发送给进程, 进程可以通过安装信号处理过程,在信号处理过程中设断点也可以通过bt来看到调用栈, 还有方法是自己实现打印调用栈的函数, 参考李先静的《系统程序员成长计划》,在代码里面想要看调用栈信息的地方调用打印调用栈函数。

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
5 [报告]
发表于 2012-09-29 14:39 |只看该作者
貌似只有操作系统才能真正处理进程退出过程吧

论坛徽章:
0
6 [报告]
发表于 2012-09-29 15:46 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2012-09-29 16:32 |只看该作者
非常感激回复,获益匪浅
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP