博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
信号练习
阅读量:6978 次
发布时间:2019-06-27

本文共 2361 字,大约阅读时间需要 7 分钟。

父进程给子进程发送信号   #include
#include
#include
#include
#include
main() { pid_t pid; int status; if(!(pid= fork())) { printf("Hi I am child process!\n"); sleep(10); return; } else{ printf("send signal to child process (%d) \n",pid); sleep(1); kill(pid ,SIGABRT); wait(&status); if(WIFSIGNALED(status))//如果子进程因为信号而结束,此宏为真!! { printf("chile process receive signal %d\n",WTERMSIG(status));//取得子进程因为信号而终止的信号代码! } } }
#include
#include
#include
#include
#include
main() { unsigned int i; alarm(1); for(i=0;1;i++) { printf("I=%d",i); } } //运行结果部分截图如下 alarm()函数和时间有关系,这个函数可以在second秒后向自己发送一个SIGALRM信号。
SIGALRM信号的默认操作时结束进程,所以程序在一秒钟以后结束!
#include
#include
#include
#include
#include
#include
int main(int argc,char **argv) { double y; int i=0; sigset_t intmask; sigemptyset(&intmask); /* 将信号集合设置为空*/ sigaddset(&intmask,SIGINT); /*加入中断Ctrl+c信号*/ while(1) { /**/ sigprocmask(SIG_BLOCK,&intmask,NULL); //阻塞信号,我们不希望保存原来的集合,所以参数为NULL fprintf(stderr,"SIGINT signal blocked\n"); for(i= 0; i<5; i++){
sleep(1); //    fprintf(stderr,"Blocked calculation is finished\n");    }      /**/    sigprocmask(SIG_UNBLOCK,&intmask,NULL);    fprintf(stderr,"SIGINT signal unblocked\n");    for(i=0; i<100; i++){     fprintf(stderr,"Unblocked calculation is finished\n");    }    exit(0);  } } 当我按下ctrl+c时,因为信号被阻塞,所以程序继续执行,等到解除阻塞时,程序停止执行!
#include 
#include
typedef void (*signal_handler)(int);void signal_handler_fun(int signal_num){printf("catch siganl %d\n",signal_num);}int main( void ){ signal_handler p_signal=signal_handler_fun; signal(SIGINT,p_signal); for(;;); return 0;}[root@linux leijiangtao]# gcc signal.c[root@linux leijiangtao]# ./a.out^Ccatch siganl 2^Ccatch siganl 2^Ccatch siganl 2/*可以按CTRL +C 来终止该进程了或者CTRL+\此程序是对当我们按下CTRL +C键时,会执行我们定义的信号处理函数。每当我们按下CTRL +C键时会打印该信号的number.可以看出该信号的num为2要想退出可以按下CTRL +\ 打印结果为最后一行。*/

转载地址:http://wlupl.baihongyu.com/

你可能感兴趣的文章
Java解压zip文件(文本)压缩包
查看>>
技术栈
查看>>
checkbox点击切换选中状态
查看>>
2019,商业智能的10大未来趋势
查看>>
将ubuntu系统设置静态ip及ssh
查看>>
云原生应用的10大关键属性
查看>>
Android 在运行时请求权限
查看>>
CentOS7使用firewalld打开关闭防火墙与端口
查看>>
Redis集群两种配置方式
查看>>
编写自己的SpringBoot-starter
查看>>
MySql 语句优化
查看>>
MySQL的基础
查看>>
Spring Boot(十一)Redis集成从Docker安装到分布式Session共享
查看>>
读Zepto源码之操作DOM
查看>>
切版网上线,启用qieban.cn
查看>>
横向ListView(一) ——开篇,基础逻辑实现
查看>>
STM32单片机外部中断配置讲解
查看>>
阿里云智能对话分析服务
查看>>
中文详解phpmailer所有对象和属性
查看>>
python 函数
查看>>