阅读背景:

项目中碰到的一个伤脑筋的C语言问题..急.

来源:互联网 
有一个守护进程,里面有很多个线程,启动和关闭都是通过写SHELL来实现,其中关闭的时候用了killproc函数来关闭进程,而进程那边是需要捕捉kill信号,来实现关闭前的操作,比如将内存(全局结构体,变量等)的内容写到二进制文件中去,而killproc发过来的信号只能捕捉,却不是暂停和屏蔽,所以一方面线程(进程)在一个个的关闭,最后也主进程也关了,而这个时候通过信息捕捉的结束代码(前面提到的内存写文件之类的)也同时在运行,这个时候就存在一个问题,就是信号捕捉的代码和killproc函数关闭程序在争时间,如果信号捕捉的代码在主进程关闭前执行完毕,刚程序正常结束.如果信号捕捉的代码还未执行完毕,进程就结束了.刚程序异常结束,内存中的内容则来不及写到二进制文件.测试了几次,发现当进程负担比较轻的时候,通过SHELL来关闭,刚程序正常结束.如果进程正在处理数据,则异常结束.想通过SLEEP之类的函数也拖延进程关闭,试了几次均告失败,又想通过另一个进程来单独调用结束代码.可是可守护进程结束时,它的所以数据也随之消失,单独进程则取不到数据.... 有一个守护进程,里面有很多个线程,启动和关闭都是通过写SHELL来实现,其中关闭的时候用了ki



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: