第十一章
(1)
进程间通信指不同进程间交换数据的过程
进程间通信指不同进程访问同一块内存空间,根据访问的值的改变来进行通信
(2)
不同进程具有完全的内存结构,只能访问自己的内存空间,无法访问一块共享的内存空间,需要操作系统的帮助
(3)
a.由进程通过pipe函数创建
b.通过pipe函数创建的出入口的文件描述符连接到同一管道
c.双向通信需要创建2个管道
(4)
example11_4.c
#include <stdio.h>
#include <unistd.h>
#define BUF_SIZE 40
int main(){
int fds1[2], fds2[2];
char pstr1[] = "Parent process first message!";
char pstr2[] = "Parent process second message!";
char pstr3[] = "Parent process third message!";
char cstr1[] = "Child process first message!";
char cstr2[] = "Child process second message!";
char cstr3[] = "Child process third message!";
char message[BUF_SIZE];
pid_t pid;
pipe(fds1), pipe(fds2);
pid = fork();
if(pid){
write(fds1[1], pstr1, sizeof(pstr1));
read(fds2[0], message, BUF_SIZE);
printf("Message from child process: %s \n", message);
write(fds1[1], pstr2, sizeof(pstr2));
read(fds2[0], message, BUF_SIZE);
printf("Message from child process: %s \n", message);
write(fds1[1], pstr3, sizeof(pstr3));
read(fds2[0], message, BUF_SIZE);
printf("Message from child process: %s \n", message);
}else{
read(fds1[0], message, BUF_SIZE);
printf("Message from parent process: %s \n", message);
write(fds2[1], cstr1, sizeof(cstr1));
read(fds1[0], message, BUF_SIZE);
printf("Message from parent process: %s \n", message);
write(fds2[1], cstr2, sizeof(cstr2));
read(fds1[0], message, BUF_SIZE);
printf("Message from parent process: %s \n", message);
write(fds2[1], cstr3, sizeof(cstr3));
}
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务