命令逐行显示_在LoadRunner中执行命令行程序之:popen()取代system()

20df2359a01b618b272e413297b8ca23.png

》》》推荐阅读《《《

1、性能测试学习笔记-场景设计

2、性能测试的重要意义

3、性能分析流程及方法

4、应用系统性能调优之性能分析

在LoadRunner中执行命令行程序之:popen()取代system()
    我想大家应该都知道在LoadRunner可以使用函数system()来调用系统指令,结果同在批处理里执行一样。
    但是system()有个缺陷:无法获取命令的返回结果。
    也许你可以用`echo command > file`将结果输出到文件,然后再读出来。多痛苦的一件事啊!当虚拟用户多的时候,你还得考虑重复写同一个文件存在的风险。或是将文件名进行参数化以保证不同相同的文件,但这样又加大了IO的负载。
    实际上有更好的解决办法:使用popen()
    popen()用法上类似于fopen(),但不需要打开文件,直接读取数据流。全内存操作,不需要考虑文件覆盖,更不存在磁盘IO。
    举例如下:
#define BUFFER_SIZE 10240 // 初始给10KB
Action(){ 
    long fp; // 流的指针 
    int count; // 流的长度 
    char buffer[BUFFER_SIZE]; // 给输出分配内存空间 
    /* 
     * 下来我们来获取当前系统的用户名称 
     */ 
    fp = popen("echo %USERDOMAIN%", "r");
    if (fp == NULL) { 
        lr_error_message("命令执行失败"); 
        return -1; 
    } 
    count = fread(buffer, sizeof(char), BUFFER_SIZE, fp); // 读取返回数据 
    if (feof(fp) == 0) { 
        lr_error_message("请给流分配更多的内存空间,谢谢!"); 
        return -1; 
    } 
    if (ferror(fp)) { 
        lr_error_message ("流读取失败"); 
        return -1; 
    } 
    buffer[count] = NULL; 
    lr_output_message("Notify:当前用户: %s", buffer); 
    pclose(fp); 
    return 0; 
}
输出:
Running Vuser... 
Starting iteration 1. 
Starting action Action. 
Action.c(28): Notify:当前用户: higkoo
Ending action Action. 
Ending iteration 1. 
Ending Vuser...

     OK,下面再举个例子,逐行获取结果并逐行输出:
extern char* strtok(char *token, const char *delimiter); // 提前申明 
#define BUFFER_SIZE 20480 // 初始给它20 KB先 
Action(){ 
    long fp; // 流指针 
    int count; //流长度 
    char buffer[BUFFER_SIZE]; // 给流分配内存 
    char * token; 
    char param_buf[10]; // 用于保存参数名称 
    int i; 
    /* 
     * 显示已安装设备驱动程序列表 
     */ 
    fp = popen("DRIVERQUERY", "r"); 
    if (fp == NULL) { 
        lr_error_message("命令执行失败"); 
        return -1; 
    } 
    count = fread(buffer, sizeof(char), BUFFER_SIZE, fp); // 拿返回结果 
    if (feof(fp) == 0) { 
        lr_error_message("返回值过多,请加大流长度"); 
        return -1; 
    } 
    if (ferror(fp)) { 
        lr_error_message ("结果读取失败"); 
        return -1; 
    } 
    buffer[count] = NULL; 
    token = (char*) strtok(buffer, "\n"); // 按换行符分割 
    if (token == NULL) { 
        lr_error_message ("返回值里没有换行"); 
        return -1; 
    } 
    i = 1; 
    while (token != NULL) { // 逐行的读结果 
        sprintf(param_buf, "output_%d", i); 
        lr_save_string(token, param_buf); 
        i++; 
        token = (char*) strtok(NULL, "\n"); 
    } 
    lr_save_int(i-1, "output_count"); 
    for (i=1; i<=lr_paramarr_len("output"); i++) {// 把所有行都打出来 
        lr_output_message("设备信息: %s", lr_paramarr_idx("output", i)); 
    } 
    pclose(fp); 
    return 0; 
}

》》》推荐阅读《《《

1、性能测试学习笔记-场景设计

2、Web站点性能调优完全攻略

3、应用系统性能调优之性能分析

4、Windows监控——性能指标详解

6、性能测试的重要意义

7、软件性能测试的本质_致命版

8、性能分析流程及方法

9、性能测试流程

10、性能测试从需求分析开始

11、性能测试指标

12、双活数据中心揭秘之—DB2 PureScale

13、循序渐进学习oracle

14、软件项目管理中的十个误区

15、功能测试方法总结及常见面试问题

16、MQ来账通道及队列配置

17、Linux命令大全整理

18、JMeter工具简单介绍

19、性能瓶颈分析方法

20、性能测试-LoadRunner操作流程之一

22、性能测试-LoadRunner操作流程之二

23、性能测试-LoadRunner操作流程之三

24、性能测试-脚本编写之一

25、性能测试-脚本编写之二

26、性能测试-脚本编写之三

27、性能测试-性能调优之一

28、性能测试-性能调优之二

fd9bd1f49e66b566bd122d11c2e82457.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

的使用go_使用 Go 开发 Prometheus Exporter

Exporter 是 Prometheus 监控的核心&#xff0c;如果你遇到一些应用不存在相应的 Exporter&#xff0c;那么我们可以自己去编写 Exporter。下面我们简单介绍如何使用 Golang 来快速编写一个 Exporter。1. 安装 GO 和依赖包按照 https://golang.org/doc/install 上的步骤进行安装…

tensorflow中的正则化函数在_tensorflow中的正则化及数据增强

正则化&#xff1a;一般可以通过减少特征或者惩罚不重要特征的权重来缓解过拟合&#xff0c;但是我们通常不知道该惩罚那些特征的权重&#xff0c;而正则化就是帮助我们惩罚特征权重的&#xff0c;即特征的权重也会成为模型的损失函数一部分。可以理解为&#xff0c; 为了使用某…

flask 获取前端form内容_flask 项目中使用 bootstrapFileInput(进阶篇)

bootstrap 为 flask 使用人员提供了一个非常优美且有效的前端页面组件,但是完美之处还存在些许缺陷,比如文件的上传功能.而 bootstrap-fileinput 是基于 bootstrap 的控件,非常完美的填补了这个空缺.注意: 本文是基于 bootstrap-fileinput v4.4.2. github 地址: https://github…

phpstudy能安装不带mysql的么_装了phpstudy还需要装mysql吗

phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的ApachePHPMySQLphpMyAdminZendOptimizer&#xff0c;一次性安装&#xff0c;无须配置即可使用&#xff0c;是非常方便、好用的PHP调试环境。该程序不仅包括PHP调试环境&#xff0c;还包括了开发工具、开发手册等。对…

mysql二进制备份配置_mysql针对于二进制数据的备份

由于这次项目文件存储部分数据是以二进制形式存储到mysql数据库中&#xff0c;这下移植开发环境的数据之前导出SQL的形式不行了&#xff0c;二进制的数据导出SQL没问题&#xff0c;但是导入就出现问题了。要是库中含有二进制数据&#xff0c;备份SQL这招肯定不行了&#xff0c;…

mysql 5.1.53_mysql 5.1.53免安装版的优化配备和精简

mysql 5.1.53免安装版的优化配置和精简[摘要]MySQL是一种关联数据库管理系统&#xff0c;关联数据库将数据保存在不同的表中&#xff0c;而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。本文介绍mysql-noinstall.zip免安装版的优化配置和精简。欢迎大家阅…

eomj表情 mysql_mysql 数据库支持emjoy表情

数据库支持emjoy表情对于emjoy表情&#xff0c;插入数据库的时候总是报错如下&#xff1a;Incorrect string value: \xF0\x9F\x98\x8D for column REAL_NAME at row 1从上面看出该字段不支持emjoy表情check查找发现emjoy表情采用的是utf8mb4存储,utf8mb4是utf8的超集(包含了一些…

linux c mysql教程_Linux c访问mysql 编写入门

一) 前置条件&#xff1a;(1) Linux 已经安装好 mysql 数据库&#xff1b;(2) Linux 已经安装了 gcc 编译器&#xff1b;(二)数据库准备&#xff1a;为了便于描述&#xff0c;假设数据库的 root 用户密码为 root_pwd 。(1) 以 root 用户登陆数据库#mysql -ur…

mysql性能优化 硬件优化_mysql性能优化学习笔记(6)数据库配置优化硬件优化...

一、操作系统配置优化&#xff1a;1. 网络方面&#xff0c;修改/etc/sysctl.conf文件&#xff0c;增加tcp支持的队列数&#xff0c;减少断开连接时&#xff0c;资源的回收。2. 打开文件数的限制。修改/etc/security/limits.conf文件&#xff0c;增加一下内容以修改打开文件数量…

mysql崩溃_mysql崩溃原因分析

最近开发人员那边总说他们的程序连接一台指定服务器的时候出现闪断的现象,有连接失败的日志生成.于是就登陆到这台机器上探查个究竟,看了下mysql的错误日志,发现有mysql崩溃的现象,数据目录下面生成好多的bin文件,错误日志里面的内容如下:090922 1:10:39 - mysqld got signal …

dataframe存到mysql中_pandas实现to_sql将DataFrame保存到数据库中

目的在数据分析时&#xff0c;我们有中间结果&#xff0c;或者最终的结果&#xff0c;需要保存到数据库中&#xff1b;或者我们有一个中间的结果&#xff0c;如果放到数据库中通过sql操作会更加的直观&#xff0c;处理后再将结果读取到DataFrame中。这两个场景&#xff0c;就需…

mysql用于放置可执行文件的目录_在 MySQL 安装目录中, bin 目录用于放置一些可执行文件。_面向对象程序设计(C#)答案_学小易找答案...

【单选题】形成通货膨胀的原因是( )【单选题】患者在就诊的过程中,其投入的最主要内容是( )。【多选题】25 、绝对剩余价值生产和相对剩余价值生产的区别和联系是( )【多选题】21 、劳动力成为商品的条件( )【单选题】所谓的内部服务指的是( )。【单选题】服务业主要对应的产业…

python 跳过计算错误_在python中计算分数时如何跳过被0除的错误?

我正在运行一个很长的CSV文件下面的函数。函数每50行计算列MFE的Z分数。这50行中有一些只包含零&#xff0c;因此在计算Zscore时&#xff0c;程序会停止&#xff0c;因为它不能被零除。如何解决这个问题&#xff0c;而不是停止程序运行打印这些行的z分数0&#xff1f;在def doZ…

python中的seed_Python seed() 函数 - Python 教程 - 自强学堂

Python seed() 函数描述seed() 方法改变随机数生成器的种子&#xff0c;可以在调用其他随机模块函数之前调用此函数。。语法以下是 seed(() 方法的语法:import randomrandom.seed ( [x] )注意&#xff1a;seed(()是不能直接访问的&#xff0c;需要导入 random 模块&#xff0c;…

ubuntu dpkg mysql_ubuntu-12.04 – 在Ubuntu 12.04上无法启动MySQL5.5 – “dpkg:依赖问题”...

这似乎是12.04上的一个常见问题。我在this thread尝试过&#xff0c;包括&#xff1a;sudo apt-get cleansudo apt-get autocleansudo apt-get remove --purge mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server mysql-server-5.5 mysql-server-core-5.5sudo …

mysql 中caption_Django-Model操作数据库(增删改查、连表结构)(示例代码)

Django-Model操作数据库(增删改查、连表结构)一、数据库操作1、创建model表基本结构from django.db importmodelsclassuserinfo(models.Model):#如果没有models.AutoField&#xff0c;默认会创建一个id的自增列name models.CharField(max_length 30)emailmodels.EmailField()…

python中如何定义函数的传入参数是option的_python – 当使用@ click.option将命令行参数传递给函数时,如何返回值?...

我试图使用click python包将命令行参数传递给函数.官方文档中的示例如解释的那样工作.但是文档中没有提到如何返回值.文档中没有任何函数返回值,因此我不明白如何执行此操作.以文档为例&#xff1a;import clickclick.command()click.option(--count, default3, helpNumber of …

python牛顿法寻找极值_python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例...

Rosenbrock函数的定义如下&#xff1a;其函数图像如下&#xff1a;我分别使用梯度下降法和牛顿法做了寻找Rosenbrock函数的实验。梯度下降梯度下降的更新公式&#xff1a;图中蓝色的点为起点&#xff0c;橙色的曲线(实际上是折线)是寻找最小值点的轨迹&#xff0c;终点(最小值点…

借贷记账法下的账户对应关系_2017年会计基础考点之借贷记账法下的账户对应关系与会计分录...

2016年会计从业考试各省已接近尾声&#xff0c;中公会计考试网为帮助参加2017年会计从业资格考试的伙伴们备考&#xff0c;特推出会计从业资格考试各科目章节重难点知识点讲解&#xff0c;今天小编给大家带来的是会计基础考点之借贷记账法下的账户对应关系与会计分录&#xff0…

mysql报11004_使用mysqli扩展技术查看服务器连接错误报告的方法

使用mysqli扩展技术查看服务器连接错误报告的方法作为PHP的黄金搭档MySQL数据库&#xff0c;在PHP项目开发过程中有着举足轻重的作用&#xff0c;这不仅因为MySQL是完全免费的&#xff0c;而且和PHP一样都是完全跨平台的。但在实际项目开发过程中&#xff0c;PHP与MySQL数据库产…