io的flush方法 + 信号量的kill说明
时间:2007-12-18 来源:stlaw
程序里要记日志,句柄打开在那,等到结束才能close,可这个结束除了kill,是不会自动结束滴,
每次kill的日志总是要漏1段未写入,如何是好?
找了logging的源代码,才发现flush这个方法,原来如此,即时将缓存中的数据写入io设备。
信号量的kill:
本想折腾通过信号量来使kill -9 激活某全局变量-》安全退出程序,
怎么着通过
signal.signal(signal.SIGKILL,killfun)
signal.signal(signal.SIGSTOP,killfun)
都无法实现,
而测试killfun通过,键盘中断ctrl-c是没有问题:
signal.signal(signal.SIGCHLD,killfun)
signal.signal(signal.SIGSINT,killfun)
(不明白为啥1个键盘中断需要2个信号量来捕捉)
man 7 signal:
有这么1句:
The signals SIGKILL and SIGSTOP cannot be caught, blocked or ignored.
(cu上的blog咋恁慢的可以,先用用看)
每次kill的日志总是要漏1段未写入,如何是好?
找了logging的源代码,才发现flush这个方法,原来如此,即时将缓存中的数据写入io设备。
信号量的kill:
本想折腾通过信号量来使kill -9 激活某全局变量-》安全退出程序,
怎么着通过
signal.signal(signal.SIGKILL,killfun)
signal.signal(signal.SIGSTOP,killfun)
都无法实现,
而测试killfun通过,键盘中断ctrl-c是没有问题:
signal.signal(signal.SIGCHLD,killfun)
signal.signal(signal.SIGSINT,killfun)
(不明白为啥1个键盘中断需要2个信号量来捕捉)
man 7 signal:
有这么1句:
The signals SIGKILL and SIGSTOP cannot be caught, blocked or ignored.
(cu上的blog咋恁慢的可以,先用用看)
相关阅读 更多 +