【创建多个子进程】如题。该怎么解决
【创建多个子进程】如题。。。。。。。。。。。。。。。
1.父进程使用系统调用fork()创建两个或更多的子进程
2.子进程要输出自己的进程标识符和属于哪个父进程,然后输出3行提示信息。
3.父进程显示自己的进程ID和一些提示信息,然后调用waitpid()等待多个子进程结束,并在子进程结束后显示输出提示信息表示程序结束。
这怎么写?好纠结
------解决方案--------------------
------解决方案--------------------
1.父进程使用系统调用fork()创建两个或更多的子进程
2.子进程要输出自己的进程标识符和属于哪个父进程,然后输出3行提示信息。
3.父进程显示自己的进程ID和一些提示信息,然后调用waitpid()等待多个子进程结束,并在子进程结束后显示输出提示信息表示程序结束。
这怎么写?好纠结
------解决方案--------------------
#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;
}