用getopt()处理命令行多参数
2009-05-13 00:38:38来源:未知 阅读 ()
这是FreeBSD的ManPage,getopt用来处理命令行参数组合问题。
HTH~~
/***************************************************
/*
/*题目:FreeBSD-ManPage-getopt(3)
/*
/*翻译:Patrick
/*
/*时间:2004-8-24
/*
/***************************************************
名字
getopt -- get option character from command line argument list
库
标准c库 (libc,-lc)
定义
#include
extern char *optarg;
extern int optind;
extern int optopt;
extern int opterr;
extern int optreset;
int
getopt(int argc, char * const *argv, const char *optstring);
描述
这个getopt()函数分析一个命令行参数列argv,并返回下一个已知的选项(option)。如果一个选项在可接受选项串optstring中列出,那么它就是已知的。
这个选项串optstring可以包含下列元素:单个字符,字符后面接一个冒号说明后面跟随一个选项参数。例如,一个选项字符"x"表示选项"-x",选
项字符"x:"表示选项和其参数"-x argument"。一个跟随的参数argument是否引导一个空格与getopt()无关。
在getopt()的返回中,optarg指向选项参数,如果它是anticipated,并且变量optind包含下一个argv参数作为对getopt()下一次调用的索引。变量optopt保存最后一个由getopt()返回的已知的选项。
变量opterr和optind都被初始化为1。变量optind可能在对getopt()的调用前已设成其他值的调用前,为了略去或多或少的argv入口。
为了使用getopt()来处理多组参数,或多次处理单组参数,变量optreset必须在每一个对getopt()附加的调用前设置成1,并且变量optind必须已被初始化。
当参数列已经到尾时getopt()函数返回-1,或者返回'?'当遇到一个未知的选项。参数列中选项的解释可能会被'--'取消,由于它引起
getopt()给参数处理发送结束信号并返回-1。当所有的选项都被处理后(比如一直到第一个非选项参数),getopt()返回-1。
诊断
如果getopt()函数遇到一个在optstring中没有的字符或检测到一个缺选项的参数,它会向stderr中写一个错误信息并返回'?'。将
opterr置0可以使它不向stderr中写错误信息。如果optstring以':'开头,那么一个却选项的参数会使':'返回除
suppressing之外的任何错误信息。
选项参数允许使用"-"开头;这是合理的,但可能减少错误检测的总数。
扩展
变量optreset的增加使多次调用getopt()函数成为可能。这是IEEE 1003.2(POSIX.2)规范的扩展部分。
举例
int bflag, ch, fd;
bflag = 0;
while ((ch = getopt(argc, argv, "bf:")) != -1)
switch (ch) {
case 'b':
bflag = 1;
break;
case 'f':
if ((fd = open(optarg, O_RDONLY, 0)) 历史
getopt()函数首次出现于4.3BSD。
BUGS
getopt()函数曾经返回EOF代替-1。这在IEEE 1003.2-1992(POSIX.2)中被改回来了。
一个单破折号"-"
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- FreeBSD基础命令 2009-05-13
- tar 命令帮助 2009-05-13
- UNIX学习(5) 2009-05-13
- mysql-bin.000001文件的来源及处理方法 2009-05-13
- UNIX学习(1) 2009-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash