码迷,mamicode.com
首页 > 其他好文 > 详细

[学习记录]fork压力测试程序

时间:2015-04-15 16:16:28      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <unistd.h>
#include<errno.h>

void LoopFunc(int);

int main(void)
{
    int procNum = 0;
    int loopNum = 0;
    int i, j;
    pid_t pid;
    
    printf("请输入要运行的进程数");
    scanf("%d", &procNum);
    printf("请输入每个进程运行圈数");
    scanf("%d", &loopNum);
    
    for(i = 0; i < procNum; ++i)
    {
        pid = fork();
    
        if (-1 == pid)
        {
            perror("fork err");
            return 0;
        }
        if (pid > 0)
        {
            ;
        }
        if (0 == pid)
        {
            for(j = 0; j < loopNum; ++j)
            {
                LoopFunc(j + 1);
            }
            return 0;
        }
    }
    
    
    printf("over!\n");
    
    return 0;
}

void LoopFunc(int num)
{
    printf("LoopFunc......%d\n", num);
    return;
}

/*
------------
每次循环后子进程结束不参与下一次fork,父进程继续上去生孩子.
父进程和子进程都是同时执行,父进程生完孩子就继续往下走.孩子自己执行自己的事情,
所以最后一句话printf("over!\n");可能出现在输出语句的任何位置这无关紧要.

如果让父进程不参与下一次fork而由孩子来参与下一次fork则形成2种不同的创建形态

父进程参与下一次fork形成深度为一的树一样的形状(一个爸爸,多个孩子)
子进程参与下一次fork形成链表一样形状(孩子生孩子)
------------
*/

 

[学习记录]fork压力测试程序

标签:

原文地址:http://www.cnblogs.com/shichuan/p/4428632.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!