/*
* 题目:
* 编程一个基本多进程测试框架,提示用户输入进程数、和每个进程数运行圈数。(fork)
* 进行多进程压力测试。(execve)
* 要求父进程能监控所有子进程的退出,避免僵尸进程。(wait)
* */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(int arg, char *args[])
{
if (arg < 2)
{
printf("please print pid num !\n");
return -1;
}
int pidnum = atoi(args[1]);
int pid = 0;
while (pidnum--)
{
pid = fork();
if (pid < 0)
{
printf("fork() failed !\n");
break;
}
if (pid == 0)
{
//执行测试程序
execl("./runc", "./runc", NULL);
}
}
int status = 0, ret = 0;
while (1)
{
ret = wait(&status);
printf("子进程pid=%d\n", ret);
if (ret == -1)
{
//屏蔽其他信号
if (errno == EINTR)
{
continue;
}
break;
}
}
printf("game is over !\n");
return 0;
}
![](https://images2015.cnblogs.com/blog/644743/201611/644743-20161130225749115-286297863.png)