zoukankan      html  css  js  c++  java
  • Linux Linux程序练习十四(多进程压力测试)

    /*
     * 题目:
     * 编程一个基本多进程测试框架,提示用户输入进程数、和每个进程数运行圈数。(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 !
    ");
            return -1;
        }
        int pidnum = atoi(args[1]);
        int pid = 0;
        while (pidnum--)
        {
            pid = fork();
            if (pid < 0)
            {
                printf("fork() failed !
    ");
                break;
            }
            if (pid == 0)
            {
                //执行测试程序
                execl("./runc", "./runc", NULL);
            }
        }
        int status = 0, ret = 0;
        while (1)
        {
            ret = wait(&status);
            printf("子进程pid=%d
    ", ret);
            if (ret == -1)
            {
                //屏蔽其他信号
                if (errno == EINTR)
                {
                    continue;
                }
                break;
            }
        }
        printf("game is over !
    ");
        return 0;
    }

  • 相关阅读:
    yii2之依赖注入与依赖注入容器
    MySQL查询性能优化
    MySQL索引(2)
    go es
    es数据操作入门
    es环境搭建
    gRPC接入etcd
    etcd简单介绍
    Go调用NSQ简单实践
    NSQ快速入门实践
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/6120106.html
Copyright © 2011-2022 走看看