我需要创建5个进程,一个是第二个的父亲,第三个的爷爷等等。所有人都必须等待彼此完成。我试过这个方法:
switch (pid = fork()) {
case 0:
printf("Child PID = %d\n", getpid());
printf("parent: =\%d\n", getppid());
return 0;
default:
break;
但我总是得到同一个父母。
答案 0 :(得分:2)
您需要使用递归。
例如:
void create_processes(int n) {
if(n == 0) return;
if(fork() == 0) {
int status;
// You're in the child process. Calling it recursively will have the
// child's PID as parent
create_processes(n - 1);
// Do work you need done before the child terminates
wait(&status);
// Do work you need done after the child terminates
}
}
然后将其称为
create_processes(5);
答案 1 :(得分:0)
调用不返回任何类型的进程myProcess
并将int
作为参数。然后...
void myProcess(int x)
{
if (x > 5) return;
if (x != 0)
myProcess(x - 1);
return;
};
int main()
{
int myvar = 5;
myProcess(myvar);
return 0;
}
这是递归完成的。