• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

XiaoXiaoli

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Linux编程_信号

信号的名字是在头文件signal.h(usr/include/signal.h)中定义的。

以SIG开头。

如果进程接收到信号中的一个,但事先没有捕获它,进程会立刻终止。一般会生成core文件,然后放在当前目录下。

 

信号处理

signal函数。

signal函数的原型声明:void (*signal(int signal_num, void(*func)(int))) (int)

可以使用signal库函数来处理信号。

 

信号的处理方式一般有三种:

1 忽略此信号。

2 执行该信号的默认动作。

3 提供一个信号处理函数。

 信号处理的案例

#include <signal.h>
#include <stdio.h>
#include <unistd.h>

void ouch(int sig)
{
     printf("OUCH! - I got signal %d\n", sig);
     (void) signal(SIGINT, SIG_DFL);
}

int main()
{
      (void) signal(SIGINT, ouch);
      
       while(1){
           printf("Hello World\n");
           sleep(1);
       }            
}    

 SIGINT: 终止程序运行,CTRL+C键组合会产生该信号。ctrl+c == SIGINT (终端中断符)

 SIGDFL:使信号恢复默认行为。 

 

发送信号

进程可以通过kill函数向其他进程包括自己发送信号。

 

posted on 2021-07-25 23:15  XiaoXiaoli  阅读(57)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3