2.进程间的信号传递
来源:互联网 发布:在淘宝上买东西的流程 编辑:程序博客网 时间:2024/05/20 22:37
8.23
问题1:linux如何移动一个文件夹到另外一个目录下
mv 目录 新目录
问题2:vi编辑器如果保存并退出:wq.(注意冒号)
https://wenku.baidu.com/view/32cdfa48cc22bcd126ff0ceb.html
的第3题,学习c的信号传递,首先看看信号是什么鬼:
http://www.runoob.com/cplusplus/cpp-signal-handling.html
根据这2份源代码,初见端虞:
发送信号的进程源代码contrl:
问题1:linux如何移动一个文件夹到另外一个目录下
mv 目录 新目录
问题2:vi编辑器如果保存并退出:wq.(注意冒号)
https://wenku.baidu.com/view/32cdfa48cc22bcd126ff0ceb.html
的第3题,学习c的信号传递,首先看看信号是什么鬼:
http://www.runoob.com/cplusplus/cpp-signal-handling.html
根据这2份源代码,初见端虞:
发送信号的进程源代码contrl:
#include<stdio.h>#include<stdlib.h>#include<signal.h>int main(int arg,char *args[]){ if(arg < 2) //如果没有参数,main函数返回 return 0; else{ int pid = atoi(args[1]);//第一个参数转化为pid printf("pid = %d\n",pid); kill(pid,SIGINT);//向指向的pid发送SIGINT信号 return 0; }}关于kill函数,可以参考博客:
http://www.cnblogs.com/leeming0222/articles/3994125.html
kill函数并不一定是杀死进程,而是给pid的进程传递信号。
个人理解就是,fork,wait函数都是父子进程的痛心方式,而kill函数则是可以在没有亲属关系的进程间传递信号实现通信。
而这篇博客里面用的waitpid函数,则是父进程等待子进程退出所使用的函数,可以参考博客:
http://blog.csdn.net/kevinhg/article/details/7001719
#include<stdio.h>#include<stdlib.h>#include <unistd.h>#include<signal.h>int status = 0; //定义一个全局变量,0为打印信息,1位不打印信息 void catch_Signal(int Sign){ switch(Sign) { case SIGINT: if(status == 0)//如果status为0,那么设置status为1,否则设置status为0 status = 1; else status = 0; break; }}int signall(int signo,void (*func)(int)){ struct sigaction act,oact; act.sa_handler = func; sigemptyset(&act.sa_mask); act.sa_flags = 0; return sigaction(signo,&act,&oact);}int main(int arg,char *args[]){ signall(SIGINT,catch_Signal);//捕捉SIGINT信号 while(1) { if(status) //如果为1,打印字符串 { printf("hello\n"); } sleep(1); } return 0;}关于sigaction函数,感觉这个函数是比较难深入了解的,里面涉及一个sigaction结构体
可以参考博客:http://blog.csdn.net/hero06206/article/details/7354124
这2个程序的运行方式是:
recsig运行,一直在循环,这个时候可以通过进程监视器看到这个进程对应的pid
control正常运行,并且 通过args输入recsig进程pid之后,发送SIGINT给recsig
recsig收到信号之后就会触发捕捉信号的函数,输出hellp
但是更加具体的关于信号处理的结构体的话感觉比较复杂,只能先暂时不深入了解,希望以后如果有机会接触,使用多了就会找机会去深入了解他们阅读全文
0 0
- 2.进程间的信号传递
- 进程示例之二----进程间的信号传递
- 进程示例之三----进程组之间的信号传递
- 向其它进程传递信号
- fork - 利用信号在父子进程间传递指针的实验
- Bug系列------关于进程信号传递的competion
- 信号--进程间的通信
- 进程间的信号通信
- 进程间的 信号 通信
- 进程间的信号通信
- 进程间的信号通信
- Qt 窗口间的信号传递
- linux进程间的通信(C):信号
- 内核进程间的信号机制
- Linux的进程间通信(信号)
- Linux进程间的通信方式:信号
- 进程间的通信之信号通信
- 信号的处理(进程间通信)
- iOS 内存知识以及修饰词的用法 copy修饰符
- 内存检测
- appium元素定位(12)
- centos系统高HA部署
- 已知一个Java类名,如何获取它的Maven坐标/依赖/dependency
- 2.进程间的信号传递
- 10分钟学会在windows-Linux下设置ASP.Net Core开发环境并部署应用
- linux下ssh连接不上
- poI导excel
- slaltstack入门
- 小程序https Android (安卓) 可以发请求,IOS (苹果)发请求失败问题
- 从0开始读java源码
- 浅析栈区和堆区内存分配的区别
- 【练习赛补题】问题 E: 花生采摘 【模拟】