上一篇
信号是Linux系统中一种进程间通信机制,用于通知进程发生了某个事件。它类似于软件中断,可以异步处理。常见的Linux信号包括SIGINT(中断)、SIGTERM(终止)等。
每个信号都有一个唯一的编号和名称。以下是一些重要的信号类型:
SIGINT (2):用户按下Ctrl+C时产生,默认终止进程。SIGQUIT (3):用户按下Ctrl+\时产生,默认终止并生成核心转储。SIGKILL (9):强制杀死进程,不能被捕获或忽略。SIGTERM (15):请求进程终止,可以被捕获或忽略。SIGSTOP:暂停进程,不能被捕获或忽略。SIGCONT:继续暂停的进程。
进程可以通过信号处理函数来改变信号的默认行为。常用的API有signal()和sigaction()。例如,忽略SIGINT信号:
signal(SIGINT, SIG_IGN); 使用kill命令可以向指定进程发送信号。例如,发送SIGTERM信号终止PID为1234的进程:
kill -15 1234 或者强制杀死:
kill -9 1234 在程序中可以使用kill()函数发送信号。
下面是一个简单的C程序,捕获SIGINT并打印消息:
#include #include #include void handler(int sig) { printf("捕获到信号 %d", sig);}int main() { signal(SIGINT, handler); while(1) { printf("运行中..."); sleep(1); } return 0;} 运行后,按下Ctrl+C会调用handler函数。
Linux信号中,SIGKILL和SIGSTOP不能被捕获或忽略,这是系统的安全机制。另外,信号处理函数应尽量简单,避免调用不可重入函数。
本文由主机测评网于2026-03-03发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20260328396.html