【发布时间】:2017-08-02 04:18:01
【问题描述】:
我必须创建四个进程,每个儿子都必须创建一个儿子,然后等待它完成。
PROCESS 0 --> PROCESS 1 --> PROCESS 2 --> PROCESS 3 --> PROCESS 4
怎么做?到目前为止,我已经尝试了以下方法:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#include <fcntl.h>
#define NUM_PROC 5
int main (void)
{
int pid;
int i;
int status;
for (i=0; i < NUM_PROC; i++)
{
if ((pid=fork()) <0 )
{
printf("Error in forking\n");
exit(EXIT_FAILURE);
} else if (pid ==0) {
printf("Sono: %d, mio padre e: %d\n", getpid(), getppid());
pid = fork();
}
else {
printf("Sono: %d, mio padre e: %d\n", getpid(), getppid());
wait( &status);
}
}
exit(EXIT_SUCCESS);
}
【问题讨论】:
-
所以你想让人们做你的工作?当执行顺序为单次执行时,拥有多个进程的想法是什么。只会增加创建进程的开销...
-
Nono 我不想让别人做我的工作,我必须做它来锻炼身体,我只是找不到可能的想法,我正在尝试很多,但我可以' t 管理做任何类似的事情
-
您能详细说明您需要帮助的部分吗? (你了解如何创建流程吗?你了解如何等待流程吗?你了解如何数到四吗?你了解如何结合这三种能力吗?)
-
是的,我会做的,我会把我做过的事情写出来
-
使用
fork()系统调用创建一个进程非常简单。看看fork()做了什么,它是parent\son进程的返回值。
标签: c process operating-system fork