Linux下利用匿名管道实现父子进程通信,要求从父进程输入整数 n 到子进程,算出1到n的偶数和

谢谢!... 谢谢! 展开
 我来答
有你的晴天12138
推荐于2016-06-11 · TA获得超过1001个赞
知道小有建树答主
回答量:305
采纳率:80%
帮助的人:210万
展开全部
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
int fd[2];

// 创建二个 fd, fd[0] 管道用于读, fd[1] 管道用于写
pipe(fd);

// 创建进程
pid_t pid = fork();
if (pid == 0)
{
// 子进程,读取整数 n
int n;
read(fd[0], &n, sizeof(int));

// 计算 1 - n 的偶数和
int sum = 0;
for (int i = 1; i <= n; ++i)
{
if (i % 2 == 0)
{
sum += i;
}
}

printf("The sum of all even number from 1 to %d is %d\n", n, sum);

// 子进程工作完后使用 exit(0) 退出
exit(0);
}
else
{
// 父进程,写入整数 n
int n;
printf("Please input n: ");
scanf("%d", &n);

write(fd[1], &n, sizeof(int));
}
}

 Linux 环境下编译及测试结果如下:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式