【创建多个子进程】如题。该怎么解决

【创建多个子进程】如题。。。。。。。。。。。。。。。

1.父进程使用系统调用fork()创建两个或更多的子进程
2.子进程要输出自己的进程标识符和属于哪个父进程,然后输出3行提示信息。
3.父进程显示自己的进程ID和一些提示信息,然后调用waitpid()等待多个子进程结束,并在子进程结束后显示输出提示信息表示程序结束。

这怎么写?好纠结
------解决方案--------------------
引用:
Quote: 引用:

getpid getppid 就这两个接口函数了!
很简单的基础的题目了。。。


怎么写呢?


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

int main(void)
{
    pid_t pid;
    int status;
    pid = fork();
    if(pid == 0)
    {   
        printf(" %d %d \n", getpid(), getppid());
        // 打印信息
    }   
    else if( pid > 0 ) 
    {   
        printf(" %d \n", getpid());
        // 打印信息
    }   
    else 
        // failed 
        
    waitpid(pid ,NULL , 0); 
    return 0;
}

------解决方案--------------------

#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(void)
{
    pid_t pid;
    int status;
    int process_num = 5;
    pid_t child_pids[process_num];
    for(int i = 0; i<process_num; ++i){
        pid = fork();
        if(pid == 0)
        {   //child process
            printf(" %d %d \n", getpid(), getppid());
            exit(0);
        }
        else if( pid > 0 )
        {  //parent process
            child_pids[i] = pid;
        }
        else{
            printf("fork error:%s", strerror(errno));
            exit(1);
        }
    }
    for(int i = 0; i<process_num; ++i){
        waitpid(child_pids[i],NULL , 0);
        printf("process exit:%d\n", child_pids[i]);
    }
    return 0;
}