c++ - Looped signal handling for UNIX -
i have loop in main() continue until stop signal (ctrl z) or quit (ctrl ) obtained. loop:
signal(sigquit, signalhandler); signal(sigtstp, signalhandler); while (1) sleep(1); what want when receive ctrl z signal, in addition printing out "stop received", want program stopped. current signal handler function:
void signalhandler(int signum) { if (signum == sigquit) cout << "quit recieved" << endl; break; else if (signum == sigtstp) cout << "stop recieved" << endl; break; else { cout << "something's wrong" << endl; exit(-1); } } what need add in order me (this being stop signal received , stop program)? i've tried far putting raise(sigtstp) in signalhandler function, puts me in infinite loop. i've tried creating volatile sig_atomic_t, initializing 0, never updates me once signal received (it stays @ 0).
Comments
Post a Comment