📄 synchro.cpp
字号:
#include "synchro.h"static volatile sig_atomic_t sigflag;static bool synchronismFlag = true;static sigset_t newmask, oldmask, zeromask;static void sig_usr(int signo);static void sig_usr(int signo){ sigflag = 1; return;}void TELL_WAIT(void){ if(signal(SIGUSR1, sig_usr) == SIG_ERR) synchronismFlag = false; if(signal(SIGUSR2, sig_usr) == SIG_ERR) synchronismFlag = false; sigemptyset(&zeromask); sigemptyset(&newmask); sigaddset(&newmask, SIGUSR1); sigaddset(&newmask, SIGUSR2); if(sigprocmask(SIG_BLOCK, &newmask, &oldmask) < 0) synchronismFlag = false;}void TELL_PARENT(pid_t pid){ kill(pid, SIGUSR2);}void WAIT_PARENT(void){ while(sigflag == 0) sigsuspend(&zeromask); sigflag = 0; if(sigprocmask(SIG_SETMASK, &oldmask, 0) < 0) synchronismFlag = false;}void TELL_CHILD(pid_t pid){ kill(pid, SIGUSR1);}void WAIT_CHILD(void){ while(sigflag == 0) sigsuspend(&zeromask); sigflag = 0; if(sigprocmask(SIG_SETMASK, &oldmask, 0) < 0) synchronismFlag = false;}bool isSynchroAble(void){ return synchronismFlag;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -