首页 / 更多教程 / 操作系统-进程间通信
操作系统-进程间通信
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了操作系统-进程间通信,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2021字,纯文字阅读大概需要3分钟。
内容图文
![操作系统-进程间通信](/upload/InfoBanner/zyjiaocheng/978/a1f79a367aff4ffe97cd22384191c434.jpg)
响应和发送消息
signal函数
signal(int, fun)
在程序捕获到一个值的时候,调用fun
定义函数:int kill(pid_t pid, int sig);
函数说明:kill()可以用来送参数sig 指定的信号给参数pid 指定的进程。参数pid 有几种情况:
1、pid>0 将信号传给进程识别码为pid 的进程.
2、pid=0 将信号传给和目前进程相同进程组的所有进程
3、pid=-1 将信号广播传送给系统内所有的进程
4、pid<0 将信号传给进程组识别码为pid 绝对值的所有进程参数 sig 代表的信号编号可参考附录D
示例程序
# include<stdio.h> # include<signal.h> # include<unistd.h> int wait_mark; void waiting() { while(wait_mark!=0); } void stop() { wait_mark=0; } int main() { int p1, p2; signal(SIGINT,stop); //若捕获到GIGINT信号,则执行后面的动作 while((p1=fork())==-1);//创建第一个进程 if(p1>0)//如果是父进程 { while((p2=fork())==-1);//创建第二个进程 if(p2>0)//如果是父进程 { wait_mark=1; waiting(0); //此时按下ctrl + c, 捕获到信号,程序继续往下执行 kill(p1,10); kill(p2,12); wait(); wait(); printf("parent process is killed!\n"); exit(0); } else //如果是p2进程 { wait_mark=1; signal(12,stop); waiting(); lockf(1,1,0); printf("child process 2 is killed by parent!\n"); lockf(1,0,0); exit(0); } } else { wait_mark=1; signal(10,stop); waiting(); lockf(1,1,0); printf("child process 1 is killed by parent!\n"); lockf(1,0,0); exit(0); } return 0; }
lockf(1,1,0)是锁定屏幕输出,不让其他进程可以输出到屏幕,lockf(1,0,0)则是解锁
在此程序中注释掉也行
管道的使用
nfc写的已经很好了,我这里就直接cv一下
示例代码
#include <unistd.h> #include <signal.h> #include <stdio.h> int pid1, pid2; int main() { int fd[2]; char OutPipe[100], InPipe[100]; pipe(fd); while ((pid1 = fork()) == -1); if (pid1 == 0) { lockf(fd[1], 1, 0); sprintf(OutPipe," child 1 process is sending message !"); write(fd[1], OutPipe, 50); sleep(5); lockf(fd[1], 0, 0); exit(0); } else { while ((pid2 = fork()) == -1); if (pid2 == 0) { lockf(fd[1], 1, 0); sprintf(OutPipe,"child 2 process is sending message !"); write(fd[1], OutPipe, 50); sleep(5); lockf(fd[1], 0, 0); exit(0); } else { wait(0); read(fd[0], InPipe, 50); printf("%s\n", InPipe); wait(0); read(fd[0], InPipe, 50); printf("%s\n", InPipe); exit(0); } } return 0; }
内容总结
以上是互联网集市为您收集整理的操作系统-进程间通信全部内容,希望文章能够帮你解决操作系统-进程间通信所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。