#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
// 定义一个信号处理函数
void handle_signal(int signum) {
printf("Received signal: %d\n", signum);
}
int main() {
// 注册信号处理函数,当收到SIGINT时调用handle_signal
struct sigaction sa;
sa.sa_handler = handle_signal;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
if (sigaction(SIGINT, &sa, NULL) == -1) {
perror("sigaction");
exit(1);
}
printf("Waiting for SIGINT (Ctrl+C)...\n");
// 程序在此处等待信号
while (1) {
pause();
}
return 0;
}
#include <signal.h> 和 #include <unistd.h> 是为了使用信号处理函数和系统调用。handle_signal 函数会在接收到指定信号(如SIGINT)时被调用,并打印出接收到的信号编号。sigaction 函数将 handle_signal 注册为 SIGINT 信号的处理函数。sigaction 提供了更灵活的信号处理机制。pause() 使进程暂停并等待信号的到来。handle_signal 函数并打印相关信息。这个示例展示了如何在 Linux 中捕获和处理信号。
上一篇:linux复制文件夹并且重命名
下一篇:linux 查看当前用户
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站