英俊男孩建坤 发表于 2022-10-5 18:25:50

多进程问题

我想让子进程创建子进程的子进程

#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>

void main(void){
    pid_t childpid;
    for(int i = 1; i < 4; i++){
      if(childpid = fork())
            break;
    }

    printf("This is process %d, with parent %d, i %d \n", getpid(), getppid(), i);
}

输出的子进程的父进程pid 异常是为什么

dolly_yos2 发表于 2022-10-5 18:44:45

您可能会有兴趣了解一下 Linux 进程收养相关的内容,可能与此有一定关联

人造人 发表于 2022-10-5 20:59:58

父进程不等待子进程结束吗?

英俊男孩建坤 发表于 2022-10-5 21:55:02

人造人 发表于 2022-10-5 20:59
父进程不等待子进程结束吗?

这样子应该没问题吧我只是想一系列的创造子进程 {:10_266:}

人造人 发表于 2022-10-5 22:26:42

英俊男孩建坤 发表于 2022-10-5 21:55
这样子应该没问题吧我只是想一系列的创造子进程

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main(void) {
    pid_t childpid;
    size_t i;
    for(i = 1; i < 4; ++i) {
      if((childpid = fork())) break;
      sleep(1);
    }
    //sleep(1);
    printf("This is process %d, with parent %d, i %zu \n", getpid(), getppid(), i);
    return 0;
}


#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main(void) {
    pid_t childpid;
    size_t i;
    for(i = 1; i < 4; ++i) {
      if((childpid = fork())) break;
      //sleep(1);
    }
    sleep(1);
    printf("This is process %d, with parent %d, i %zu \n", getpid(), getppid(), i);
    return 0;
}

人造人 发表于 2022-10-5 22:32:20

sleep的位置不对,改成下面这样
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main(void) {
    pid_t childpid;
    size_t i;
    for(i = 1; i < 4; ++i) {
      if((childpid = fork())) break;
      //sleep(3);
    }
    printf("This is process %d, with parent %d, i %zu \n", getpid(), getppid(), i);
    sleep(1);
    return 0;
}
页: [1]
查看完整版本: 多进程问题