如何通過進程捕獲信號並對其進行處理,以便當前正在進行的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) }
}
}