linux应用编程学习(6)信号

一、信号:在Linux系统中,信号(signal)同样也是最为古老的进程 间通信机制。
二、
信号处理流程:①选择信号②发送信号③处理信号
三、 信号类型:Linux系统支持的所有信号均定义在 /usr/include/asm/signal.h(展示),其中常见的信号有:
  • SIGKILL: 杀死进程
  • SIGSTOP:暂停进程
  • SIGCHLD:子进程停止或结束时用来通知父进程
四、函数学习:
6.1 发送信号
6.1.1 函数名
Kill
6.1.2 函数原形
Int kill(pid_t pid, int sig);
6.1.3 函数功能
发送信号给进程
6.1.4 所属头文件
<sys/types.h> <signal.h>
6.1.5 返回值
成功:0 失败:-1
6.1.6 参数说明
Pid:>0接收进程ID,0发送给所有进程组的进程。-1,发送给所有有发送权限的进程ID除了init进程。<-1,发送给所有进程组的-pid的进程。
Sig:要发送的信号,0的话不发送,单确认error来确认是否有进程。
6.2 处理信号
6.2.1 函数名
Signal
6.2.2 函数原形
Typedef void (*sighandler_t)(int);
Sighandler_t signal(int signum, sighandler_t handler);
6.2.3 函数功能
设置信号处理方式
6.2.4 所属头文件
<signal.h>
6.2.5 返回值
成功:返回函数处理之前的值  失败:SIG_ERR
6.2.6 参数说明
Signum:接收到的信号
Handler:对应信号的处理方式,可以取值
SIG_IGN:忽略这个信号(不处理)
SIG_DEL:交给内核处理
用户自定义的函数:交给用户自定义的函数来处理

a_signal.c:
  1. #include <sys/types.h>
  2. #include <signal.h>
  3. #include <stdio.h>

  4. void main(int argc, char *argv[])
  5. {
  6.     pid_t pid;
  7.     if(argc < 1)
  8.     {
  9.         printf("usage:a_signal [pid]\n");
  10.         return;
  11.     }
  12.     pid = atoi(argv[1]);
  13.     kill(pid,SIGINT);

  14. }
b_signal.c:
  1. #include <signal.h>
  2. #include <unistd.h>

  3. typedef void (*sighandler_t)(int);

  4. void myfunc(int a)
  5. {
  6.     printf("Process B received SIGINT\n");
  7. }

  8. void main()
  9. {
  10.     signal(SIGINT , myfunc);
  11.     pause();
  12. }


<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(33) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

习惯就好zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值