void handler(int signo) { cout << "get a signo: " << signo << endl; } int main() { for(int i = 1; i <= 31; ++i) { signal(i, handler); } while(true) { cout << "I am a crazy process" << " pid = " << getpid() << endl; sleep(1); } return 0; }
void handler(int signo) { cout << "get signo: " << signo << endl; unsigned int n = alarm(5); cout << "剩余时间:" << n << endl; } int main() { signal(SIGALRM, handler); alarm(50); while(true) { cout << "this process pid: " << getpid() << endl; sleep(1); } return 0; }
硬件异常被硬件以某种方式检测到并通知内核,然后内核向当前进程发送适当的信号。
#include #include #include using namespace std; void PrintSignal(const sigset_t& pending) { for(int i = 31; i >= 1; --i) { if(sigismember(&pending, i)) cout << "1"; else cout << "0"; } cout << "\n" << endl; } int main() { sigset_t bset, oset; sigemptyset(&bset); sigemptyset(&oset); for(int i = 1; i <= 31; ++i) { sigaddset(&bset, i); } sigprocmask(SIG_SETMASK, &bset, &oset); sigset_t pending; sigemptyset(&pending); while(true) { int ret = sigpending(&pending); if(ret == -1) continue; PrintSignal(pending); sleep(1); } return 0; }
本文到这里就结束了,如有错误或者不清楚的地方欢迎评论或者私信
创作不易,如果觉得博主写得不错,请点赞、收藏加关注支持一下💕💕💕