注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

多多的爹

 
 
 

日志

 
 

读程序,学习Linux编程(十一)  

2010-08-18 22:27:37|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

3.4. 解析命令行参数

铺垫了那么多,从现在开始正式读代码了。

还是从main函数开始。前面没啥说的,第174行:

while ((optch = getopt(argc, argv, "c:vldh")) != EOF) {

大部分Linux的应用程序,都是基于命令行的。所以解析参数,基本上是每个程序都要干的事情。getopt提供了参数提取功能,每调用一次返回一个参数。函数原型如下:

#include

int getopt(int argc, char * const argv[], const char *optstring);

argc和argv是main函数的两个参数。

字符串optstring有以下3种形式:

1. 单字符,"x"表示选项"-x"

2. 字符+冒号,说明后面跟随一个附属参数,"x:"表示参数和其附属参数"-x argument"

3. 字符+冒号冒号,说明后面跟随一个可有可无的附属参数,"x::"表示参数x的附属参数是可选的

getopt返回-1表示没有参数了,返回‘?’表示未知选项,除此返回的是参数。带附属参数的,可以通过全局字符串变量optarg来访问。由于optarg是全局的,临时使用没有问题,如果要保存下来,必须通过strdup之类的string拷贝函数将他存起来。

还有一些内容,比如‘--’,比如optind,optopt,比如opterr,比如无效选项,一般用不上。要用到时候去参考man吧。

tinyproxy中这段命令行参数解析代码,非常标准,大家可以参考一下。

  评论这张
 
阅读(2)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017