Web性能压力测试工具WebBench学习笔记

Web性能压力测试工具WebBench学习笔记

源代码学习

struct option

初始化结构体数组:const struct option longOptions[],其原型定义在getopt.h中:

#define no_argument       0
#define required_argument  1
#define optional_argument  2

struct option {
   const char *name;
   int has_arg;
   int *flag;
   int val;
};

const char *name是不带短横线的选项名,前面没有短横线。譬如“help”、“verbose”之类。
int has_arg描述了选项是否有选项参数。如果有,是哪种类型的参数,此时,它的值一定是下表中的一个。
符号常量数值含义:
no_argument 0 选项没有参数
required_argument 1 选项需要参数
optional_argument 2 选项参数可选

int *flag 如果这个指针为NULL,那么getopt_long()返回该结构val字段中的数值。如果该指针不为NULL,getopt_long()会使得它所指向的变量中填入val字段中的数值,并且getopt_long()返回0。如果flag不是NULL,但未发现长选项,那么它所指向的变量的数值不变。

int val 这个值是发现了长选项时的返回值,或者flag不是NULL时载入*flag中的值。典型情况下,若flag不是NULL,那么val是个真/假值,譬如1或0;另一方面,如果flag是NULL,那么val通常是字符常量,若长选项与短选项一致,那么该字符常量应该与optstring中出现的这个选项的参数相同。

int main(int argc, char *argv[])
{
    intopt;
    charfilename[512];
    intopen_flag = 0;
    while((opt =getopt(argc, argv, “hf:vo")) != -1) {
       switch(opt) {
       case ‘v': printf(“ver 3.1);break;
       case ‘h':usage();break;
       case ‘o’: open_flag =1 ;break;
       case 'f':
           printf("filename: %s\n", optarg);
           
           strncpy(filename,optarg,sizeof(filename)-1);
           break;
       case::
           printf("option %c needs a value\n ", optopt);
           break;
       case?:
           printf("unknown option: %c\n", optopt);
           break;
       }
    }

getopt_long解析

getopt_long()是一种函数,被用来解析命令行选项参数。
原型:

int getopt_long(int argc, char * const argv[],
const char *optstring,
const struct option *longopts, int *longindex);

函数中的argc和argv通常直接从main()的两个参数传递而来。optsting是选项参数组成的字符串:
字符串optstring可以下列元素:
1.单个字符,表示选项,
2.单个字符后接一个冒号:表示该选项后必须跟一个参数。参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg。
3 单个字符后跟两个冒号,表示该选项后可以有参数也可以没有参数。如果有参数,参数必须紧跟在选项后不能以空格隔开。该参数的指针赋给optarg。(这个特性是GNU的扩张)。
optstring是一个字符串,表示可以接受的参数。例如,“a🅱️cd”,表示可以接受的参数是a,b,c,d,其中,a和b参数后面跟有更多的参数值。(例如:-a host -b name)

sigaction

sigaction是一个函数,可以用来查询或设置信号处理方式。
sigaction(查询或设置信号处理方式)
相关函数 signal,sigprocmask() ,sigpending,sigsuspend, sigemptyset
表头文件 #include<signal.h>
定义函数 int sigaction(int signum,const struct sigaction *act ,struct sigaction *oldact);
如参数结构sigaction定义如下
struct sigaction {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值