我正在编写一个需要捕获ctrl-c事件的程序。我了解到我可以在signal.h
中调用signal
函数或sigaction
函数来定制当进程接收到SIGINT信号时该做什么。但我也很好奇这种信号监听器的机制是什么。换句话说,进程如何在继续执行其代码的同时等待特定的信号?
进程不"等待";为了信号。调用sigaction()
告诉操作系统,当进程接收到指定的信号时,强制进程采取指定的操作。当发生这种情况时,进程被中断并强制调用已注册的处理程序。