您好,欢迎来到汇智旅游网。
搜索
您的当前位置:首页《TCP/IP网络编程》课后练习第十一章(自己写的,非标准答案)

《TCP/IP网络编程》课后练习第十一章(自己写的,非标准答案)

来源:汇智旅游网

第十一章

(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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务