zoukankan      html  css  js  c++  java
  • [学习记录]fork压力测试程序

    #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!
    ");
        
        return 0;
    }
    
    void LoopFunc(int num)
    {
        printf("LoopFunc......%d
    ", num);
        return;
    }
    
    /*
    ------------
    每次循环后子进程结束不参与下一次fork,父进程继续上去生孩子.
    父进程和子进程都是同时执行,父进程生完孩子就继续往下走.孩子自己执行自己的事情,
    所以最后一句话printf("over!
    ");可能出现在输出语句的任何位置这无关紧要.
    
    如果让父进程不参与下一次fork而由孩子来参与下一次fork则形成2种不同的创建形态
    
    父进程参与下一次fork形成深度为一的树一样的形状(一个爸爸,多个孩子)
    子进程参与下一次fork形成链表一样形状(孩子生孩子)
    ------------
    */
  • 相关阅读:
    ES6扩展
    javascript当中prototype用法
    三列浮动中间宽度自适应
    介绍axios和promise
    JS高级---实例对象和构造函数之间的关系
    JS-数组常用方法整理
    原生JS轮播图
    JavaScript 开胃菜
    JS高级---遍历DOM树
    JS高级---正则表达式练习身份证号码
  • 原文地址:https://www.cnblogs.com/shichuan/p/4428632.html
Copyright © 2011-2022 走看看