如何使用 fork() 将数字与父进程和子进程相加 [重复]

Posted

技术标签:

【中文标题】如何使用 fork() 将数字与父进程和子进程相加 [重复]【英文标题】:How to sum numbers with parent and child process using fork() [duplicate] 【发布时间】:2019-03-29 04:09:30 【问题描述】:

我必须添加两个不同进程产生的结果。首先,在某个子进程中从 1 加到 100。接下来,在该进程的父进程中添加 101 到 200。之后,我想使用 fork() 和 wait() 得到这两个结果的总和。我希望这个最终过程应该在父进程中完成。我想知道如何将1-100之和的结果扔给父进程。我应该使用特殊的 Linux 命令或函数吗?谁有好的想法,请给我一个解决方案!希望能得到肯定的答复!

//child process
for(i = 1 to 100)
sum += i;
//parent process
for(i = 101 to 200)
sum += i;

//parent process??? or not
print("sum 1 to 200"= ???)

【问题讨论】:

【参考方案1】:

您可以使用共享内存、管道、文件、域套接字等。 或者使用多线程

int *sum;
sum=(int *)mmap(NULL, sizeof(int)*count_of_process, PROT_READ|PROT_WRITE,
                MAP_SHARED|MAP_ANONYMOUS, -1, 0);

【讨论】:

以上是关于如何使用 fork() 将数字与父进程和子进程相加 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

子进程怎么操作父进程中的变量

结合中断上下文切换和进程上下文切换分析Linux内核一般执行过程

什么是父进程和子进程?

使用fork创建子进程时,父ID与父ID不同[重复]

如何让父进程和子进程相互监听?

为啥多线程(使用 pthread)似乎比多进程(使用 fork)慢?