经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C » 查看文章
c/c++ linux 进程间通信系列1,使用signal,kill
来源:cnblogs  作者:小石王  时间:2018/10/19 9:19:58  对本文有异议

linux 进程间通信系列1,使用signal,kill

信号基本概念:  软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。

kill函数的详细说明:kill

信号接收端:

  1. #include <stdio.h>
  2. #include <signal.h>
  3. #include <unistd.h>//write function
  4. int flag = 0;
  5. void sigusr1_handler(int sig){
  6. printf("sig : %d\n", sig);
  7. write(1, "signal called\n",14);
  8. flag = 1;
  9. }
  10. int main(){
  11. printf("pid=%d\n", getpid());
  12. signal(SIGUSR1, sigusr1_handler);
  13. while(1){
  14. printf("waiting for signal\n");
  15. sleep(5);
  16. if(flag != 0){
  17. printf("break loop\n");
  18. break;
  19. }
  20. }
  21. return 0;
  22. }

github源代码

信号发送端:

  1. #include <stdio.h>
  2. #include <signal.h>
  3. #include <stdlib.h>
  4. int main(int argc, char* argv[]){
  5. int retval;
  6. pid_t pid = atoi(argv[1]);
  7. retval = kill(pid,SIGUSR1);
  8. if ( retval )
  9. {
  10. perror( "kill" );
  11. }
  12. else
  13. {
  14. printf( "%d killed\n", pid );
  15. }
  16. }

github源代码

在命令行里使用kill命令给信号接收端,发送信号也可以。

  1. kill -s SIGUSR1 程序的PID

c/c++ 学习互助QQ群:877684253

本人微信:xiaoshitou5854

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号