如何通过进程捕获信号并对其进行处理,以便当前正在进行的IO输出不会中断?处理信号而不会中断IO
这可以通过调用exitSignalHandling
中的所有已注册的回调handleExit()
直到一个handleExit()
返回一个状态,告诉它处理退出信号。如果它已经被标记为处理退出的信号在对象B处理,这样的话,当进程当前需要特殊护理的相关函数内部:
void exitSignalHandling(){
/** call all registered callbacks */
}
while(1){
objectB.compute();
objectA.write(some data) /* when process enters: set flag to handle exit signal , objectB registered a call back objectB::handleExit()*/
}
class objectA{
bool handleExit(){
if(handleExit == true){
exitAfterWrite = true;
return true;
}
return false;
}
write(){
handleExit=true;
/*write data*/
if(exitAfterWrite){ exit(SUCCESS) }
}
}