Linux程序参数的获取
来源:互联网 发布:中华软件股份公司 编辑:程序博客网 时间:2024/06/05 00:14
为了获取程序的参数,Linux C提供了标准编程接口:getopt函数,它支持需要关联值和不许要关联值的选项。
下面对函数介绍如下:
1 #include<unistd.h> 2 int getopt(int argc,char *const argv[],const char *optstring);3 extern char *optarg;4 extern int optind,opterr,optopt;
getopt函数将传递给程序的main函数的argc和argv作为参数,同时接收一个选项制定符字符串optstring,该字符串告诉getopt哪些选项可用,以及他们是否存在关联值。如果一个字符后面紧跟一个冒号(:)表明选项有一个关联值作为参数。
getopt函数具体行为总结如下:
1.如果选项存在关联值,optarg指向这个值
2.如果选项处理完毕,返回-1,遇到特殊参数--直接停止扫描
3.如果遇到无法识别的选项,返回问号(?),并将值保存在optopt中,
4.如果选项需要一个关联值,用户没有提供,同样返回问号(?)如果在选项字符串第一个字符设置为冒号(:),那么同样的情况返回冒号(:)
5.optind指向其他参数,对于Linux环境,argv被改写,所有其他参数都已经被放在后面。
下面举例对getopt函数使用如下:
1 #include<stdio.h> 2 #include<unistd.h> 3 #include<stdlib.h> 4 5 int main(int argc,char *argv[]) 6 { 7 int opt; 8 while((opt = getopt(argc,argv,":if:lr")) != -1){ 9 switch(opt){10 case 'i':case 'l':case 'r':11 printf("option:%c\n",opt);12 break;13 case 'f':14 printf("filename: %s\n",optarg); //optarg 用于存储关联参数 15 break;16 case ':':17 printf("option needs a value\n"); //没有给出对应关联值的时候,返回:18 break;19 case '?':20 printf("unknown option: %c\n",optopt); //未识别的选项,存入optopt21 break;22 }23 }24 //optind 用于表示其他参数的索引,注意此时argv已经被重写了25 for(; optind < argc; optind ++)26 printf("argument: %s\n",argv[optind]);27 exit(0);28 }
程序测试如下图所示:
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- Linux程序参数的获取
- 获取程序的运行参数
- linux程序的命令行参数
- 如何获取其它程序的命令行参数
- 如何获取其它程序的命令行参数
- 如何获取其它程序的命令行参数
- 如何获取其它程序的命令行参数
- 使用ParamStr获取程序的命令行参数
- 获取其他程序的命令行参数《转》
- linux获取命令行参数的函数getopt
- Linux下cache参数的获取
- linux下获取启动参数的方法
- linux程序最大的参数个数
- Linux下编译OpenCV程序的参数
- BT源代码学习心得(二):程序运行参数的获取
- 用VC获取其它程序的命令行参数
- 用 VC 获取其它运行中程序的命令行参数
- 关于程序自身的一些参数如何获取
- 黑马程序员-交通灯管理系统
- 07 Activity启动另一个Activity 及 进程的信息查询
- 黑马程序员——(活动二)哪个是假币
- 【Android 开发】:UI控件之 ImageView 实现适屏和裁剪图片的功能
- 计算机操作系统之进程与线程
- Linux程序参数的获取
- cocos2d-x 菜鸟学习笔记十四(简单的碰撞检测 进阶篇)
- 计算机操作系统之设备管理
- VMware WorkStation的三种网络模式
- 算法收藏
- GTK 字体环境设置
- 用GDB调试C程序
- Java基础(备忘)
- JAVA修饰符类型