• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

2.进程间的管道通信

mysql 搞代码 4年前 (2022-01-09) 14次浏览 已收录 0个评论

(一) 编写一个关于进程通信的简单程序,子进程送一串消息给父进程,父进程收到消息后把它显示出来。 要求: 两个子进程分别向管道写一句话: Child process 1 is sending a message! Child process 2 is sending a message! 而父进程则从管道中读出来自两

(一) 编写一个关于进程通信的简单程序,子进程送一串消息给父进程,父进程收到消息后把它显示出来。

要求:

两个子进程分别向管道写一句话:
Child process 1 is sending a message!

Child process 2 is sending a message!

而父进程则从管道中读出来自两个子进程的消息,显示屏幕上,且父进程要先接收子进程1的消息,在接受子进程2的消息。

#include#include#include#define SIZE 50int main(){	int p1, p2;	int fd[2];	char str[50];	while((pipe(fd)) == -1);	while((p1 = fork()) == -1);	if(p1)	{		while((p2 = fork()) == -1);		if(p2)		{			//parent			wait(0);			read(fd[0], str, SIZE);			printf("%s\n", str);			wait(0);			read(fd[0], str, SIZE);			printf("%s\n", str);		}		else		{			//child2			lockf(fd[1], 1, 0);			sleep(2);			strcpy(str, "Child process 2 is sending messages!\n");			write(fd[1], str, SIZE);			lockf(fd[1], 0, 0);		}	}	else	{		//child1		lockf(fd[1], 1, 0);		sleep(2);		strcpy(str, "Child process 1 is sending messages!\n");		write(fd[1], str, SIZE);		//sleep(2);		lockf(fd[1], 0, 0);	}}

(二)父进程等待用户从控制台(键盘)输入字符串,通过管道传给子进程;子进程收到后,对字符串进行大小写转换后,输出到标准输出(显示器)。

#include#include#include#define SIZE 50int main(){	int p, fd[2];	int i = 0;	char str[SIZE];	while((pipe(fd)) == -1);	while((p = fork()) == -1);	if(p)	{		//parent		lockf(fd[1], 1, 0);		printf("Please input the string:");		scanf("%s", str);		write(fd[1], str, SIZE);		lockf(fd[1], 0, 0);		wait(0);		read(fd[0], str, SIZE);		printf<i style="color:transparent">本文来源gaodai$ma#com搞$$代**码网$</i>("reversed string is : %s\n", str);	}	else	{		read(fd[0], str, SIZE);		while(str[i] != '\0')		{			if('A' <= str[i] && str[i] <= 'Z')			{				str[i] += 32;			}			else if('a' <= str[i] && str[i] <= 'z')			{				str[i] -= 32;			}			i++;		}		write(fd[1], str, SIZE);	}	return 0;}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:2.进程间的管道通信
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址