#include #include #include #include "esh-sys-utils.h" /* A demonstration for CS3214 written by * Dennis Kafura in Spring, 2014 */ bool sigusr1_blocked=true; bool sigusr2_blocked=true; int sigcont_count = 0; static void catch_sigusr1(int signo, siginfo_t* info, void* context) { printf("received SIGUSR1 \n"); } static void catch_sigusr2(int signo, siginfo_t* info, void* context) { printf("received SIGUSR2 \n"); } static void catch_sigcont(int signo, siginfo_t* info, void* context) { sigcont_count++; } int main() { esh_signal_sethandler(SIGUSR1, catch_sigusr1); esh_signal_sethandler(SIGUSR2, catch_sigusr2); esh_signal_sethandler(SIGCONT, catch_sigcont); esh_signal_block(SIGUSR1); esh_signal_block(SIGUSR2); while(1){ if (sigusr1_blocked && (sigcont_count==1)) { esh_signal_unblock(SIGUSR1); sigusr1_blocked=false; } if (sigusr2_blocked && (sigcont_count==2)) { esh_signal_unblock(SIGUSR2); sigusr2_blocked = false; } } }