如果我有父協調員程序和工作程序,但協調員程序正在創建所有需要的工作進程。如果我想正確實施alarm()方法來殺死所有進程並在一段時間後終止程序。如何正確實施alarm()方法來終止由fork()創建的所有工作進程?
這是實施它的正確方法嗎?目前我擁有它的方式,它現在會打印出相應printf()消息的消息,以供正在被殺死的工作進程使用。
注意:我實現了忽略中斷信號,以便更多的工作進程無需擔心。
int main(int argc, char** argv)
{
signal(SIGINT, sig_ctrl);
signal(SIGALRM, sig_alarm);
alarm(5);
sleep(10);
//rest of program which creates the needed processes
}
void sig_ctrl(int sig)
{
printf("Hold on buddy, you're not terminating this program with CTRL^C.\n");
}
void sig_alarm(int sig)
{
sleep(0);
fflush(stdout);
printf("The alarm is sounding, all worker procceses will be...TERMINATED!");
raise(SIGTERM);
}