[学习记录]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!\n");

    return 0;
}

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

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

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

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

复制去Google翻译翻译结果

时间: 2024-08-04 19:01:47

[学习记录]fork压力测试程序的相关文章

高可用mongodb集群的学习记录(四mongodb分片集群搭建)

无论oracle还是mysql数据库都有分区的概念,即同一张表物理上不在同一台机器上,有效缓解了表都集中存在一台机器的压力.当然,mongodb也有类似的机制,即是分片.具体理论知识大家可以参考网上文档,我这里只记录下具体操作步骤 参考网络上一个图.我选用的是2个副本集+1个仲裁.实际上我这里分片集群需要3个mongos,3个config server,数据分片3个shard server,对应着还有3个副本,3个仲裁节点,总共需要15个实例.因为我资源确实紧张,又不想影响实验效果.冥思苦想了一

ios学习记录 day41 UI17 多线程

CPU(工厂) 进程(车间) 线程(工人) 一个进程代表一个应用程序 CPU总是运行一个进程,其它进程处于非运行状态.一个进程可以包含多个线程.线程与线程之间可以共享进程的内存区域. 打开一个应用程序,系统会给我们创建一个线程,称为主线程 管理主界面的UI与内部循环机制(与界面相关的东西必须放在主线程中!!!) 压力比较大且会造成线程阻塞(界面卡),因此我们通过创建子线程来对主线程进行分压. 什么时候用多线程 1.网络请求(同步的) 2.文件读写(少) 3.大数据计算(冒泡) 4.数据库sele

Networkcomms v3 压力测试程序之微FTP服务器(EXE程序,不开源)

本程序不开源  只提供EXE文件  以便于大家了解NetworkCommsV3框架 EXE文件下载地址 本程序部分资源来自 CS程序员之窗 特此感谢 在我的工作环境中,部署的networkcomms服务器端非常的稳定,在没有同时传输大文件的情况下,cpu 占用率非常的低,在半年的时间里没有因为服务器程序出现什么问题而重启电脑.成熟的模式,良好的稳定性是我深深喜爱networkcomms的原因.从06年开始,就把主要的学习方向放在网络通信方面,但是没有合适的通信框架一直让我深感掣肘,曾经用过几个别

Android socket 学习记录 之 执行new socket(ip, port)程序崩溃

这段时间在学习Android的socket编程,我不是专做APP的,做的是bootloader.驱动.hal.framework这个线的,也就是系统搭建和功能优化设计.为了打通这整条线,为此学习了不少东西,今天把Android的socket学习记录一下,以防止以后会出现这样的低级错误. 我这里是在极客学院的源码基础上做的自己的一些添加和修改,学习开始不就是先会修改么,举一反三,自然就很快学会了.由于看过视频和资料后就迫不及待的按照自己的想法想做一个功能,但是遇到麻烦了,就是执行new socke

2015.03.10,学习,论文学习笔记-“水轮机压力脉动的混频幅值置信度分析方法研究”

文献:胡江艺.水轮机压力脉动的混频幅值置信度分析方法研究.水利机械技术,2014(3).17-22 摘要:文章根据IEC试验规程要求,对常见的用于计算压力脉动混频幅值置信度方法进行了分析.结合模型试验结果对压力脉动随机变量的分布进行了讨论.分析了计算方法的实用性,提出了符合要求的计算方法. 关键词:压力脉动 混频幅值 置信度 正态分布 笔记: 国内压力脉动测量采用混频压力脉动相对幅值,即时域内压力脉动的峰峰值与净水头H的幅值,其中峰峰值采用了置信度方法计算.IEC规程定义的混频压力脉动幅值称为宽

JVM学习记录-线程安全与锁优化(二)

前言 高效并发是程序员们写代码时一直所追求的,HotSpot虚拟机开发团队也为此付出了很多努力,为了在线程之间更高效地共享数据,以及解决竞争问题,HotSpot开发团队做出了各种锁的优化技术常见的有:自适应自旋锁(Adaptive Spinning).锁消除(Lock Elimination).锁粗化(Lock Coarsening).轻量级锁(Lightweight Locking)和偏向锁(Biased Locking)等. 自旋锁与自适应自旋 互斥同步对性能最大的影响是阻塞的实现,线程的挂

Android开发技术周报183学习记录

Android开发技术周报183学习记录 教程 Android性能优化来龙去脉总结 记录 一.性能问题常见 内存泄漏.频繁GC.耗电问题.OOM问题. 二.导致性能问题的原因 1.人为在ui线程中做了轻微的耗时操作,导致ui线程卡顿. 2.layout过于复杂,无法在16ms完成渲染.使用RelativeLayout替换LinearLayout,说是可以减少布局层次,然而,现在不再建议使用RelativeLayout,因为ConstraintLayout才是一个更高性能的消灭布局层级的神器.Co

Python学习记录-2016-12-17

今日学习记录 模块: import os#导入os模块 import sys#导入sys模块 os.system("df -h")#执行df -h命令 cmd_res = os.popen("df -h").read()#将命令的返回结果赋值给cmd_res,如果不加入.read()会显示命令的返回加过在内存的位置 print(sys.path)#显示系统变量路径,一般个人模块位于site-packages下,系统模块位于lib下 print(sys.argu[2]

Objc基础学习记录5

NSMutableString类继承的NSString类. NSMutableString是动态的字符串. 1.appendingString 方式: 向字符串尾部添加一个字符串. 2.appendingFormat:可以添加多个类型的字符串. int,chat float,double等 3.stringWithString 创建字符串, 4.rangeOfString 返回str1在另一个字符串中的位置. 5.NSMakeRange(0,3) 字符串0位到3位. 6.deleteCharac