i'm trying to block SIGSEGV, but don't know why the signal is not blocked.
This is my code :
ThanksCode:#include <iostream> #include <signal.h> #include <errno.h> using namespace std; sigset_t mSignalSet; int BlockSignal() { if (sigprocmask(SIG_BLOCK, &mSignalSet, NULL) == -1) { cout << "failed:" << strerror(errno) << endl; } return 1; } int UnblockSignal() { if (sigprocmask(SIG_UNBLOCK, &mSignalSet, NULL) == -1) { cout << "failed:" << strerror(errno) << endl; } return 1; } int main(int argc, char** args){ if ((sigemptyset(&mSignalSet) == -1) || (sigaddset(&mSignalSet, SIGSEGV) == -1)) { cout << "failed:" << strerror(errno) << endl; return 1; } cout << "Block signal" << endl; BlockSignal(); char* a = NULL; a[1] = 'a'; sleep(2); cout << "Unblock signal" << endl; UnblockSignal(); while(1){ sleep(1); } return 1; }



LinkBack URL
About LinkBacks



