关于程序控制,求各位知道的解答一下,谢谢。
linux下面的话,我可以用signal之类的控制,比如我kill掉我的程序,程序自身能捕捉SIGTERM信号,我能进行相应的处理,比如还原之前修改的东西。
但对于windows下面,我知道也有signal和几个简单的信号,但是我试了,taskkill的话(貌似windows没有kill把?),SIGTERM信号捕捉不到(SIGINT信号倒是可以)。现在我windows下面的程序需要在程序结束之前把之前修改的文件数据之类的还原回之前的状态,但是进程结束没有相应信号通知,就没还原就退出了,我想知道给位有什么办法吗?
如果我那里描述不好,我会再描述的。
不可以在结束之前调用接口来恢复数据的么?
用taskkill的话,收不到SIGTERM,所以没办法跳转到恢复数据的接口,我想知道有什么办法通告程序即将退出。
你的程序会异常退出么?
在main的最后加你恢复数据的接口不行么?
另外还有退出执行的函数 atexit,你查查资料看看怎么用,我用了man看了下,
atexit函数是退出程序前之前执行的函数
[解决办法]
不要企图优雅的结束(因为这是不可能办到的)
而要在烂的不能再烂的摊子上也能重整河山!
[解决办法]
使用atexit挂接退出函数,在退出函数中完成文件数据恢复工作