我有以下源代码,我正在从父母向孩子发送信号:
sigset_t sig_m1, sig_m2, sig_null;
int signal_flag=0;
void start_signalset();
void sig_func(int signr) {
printf("%d\n", signr, n);
start_signalset();
}
void start_signalset() {
if(signal(SIGUSR2, sig_func) == SIG_ERR) {
exit(0);
}
if(signal(SIGUSR1, sig_func) == SIG_ERR) {
exit(0);
}
}
void wait_for_parents() {
while(signal_flag == 0) {
sigsuspend(&sig_null);
}
}
int main(){
int result,pt_pid;
start_signalset();
pt_pid=getpid();
result = fork();
if(result==-1){
printf("Can't fork child\n");
exit(-1);
} else if (result == 0) {
wait_for_parents();
} else {
kill(result,SIGUSR2);
kill(result,SIGUSR2);
kill(result,SIGUSR1);
kill(result,SIGUSR2);
signal_flag = 1;
}
return 0;
}
我看到:31、31、31、30,但我期待看到 31、31、30、31。我哪里出错了?我认为同步存在一些问题。但是,我不明白如何解决它,我不确定问题是否存在。
问候,丹尼斯。