`
Tveiker
  • 浏览: 54497 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Linux下测试main函数的参数意义

    博客分类:
  • C
阅读更多
                  Linux下测试main函数的参数意义
最近其实一直再写java程序,但是昨天接到我表弟的一个请求,他在自学C,他看到了一个很特别的程序,其main函数的声明int main(int argc,char* argv[],char* env[]);这个对于他经常写的函数int main()发生了很大的区别,他向提问说,那些参数是什么东西,有什么意义,说来惭愧,我学C很久了,从来就没这样写过,所以看了一些书籍寻求解释。后来发现了
1、argc代表该程序运行是参数的个数(如ls -l其参数个数为2 ,gcc Hello.c -o Hello其参数个数为4,也就是字符串个数)
2、argv代表这些参数(字符串)(如ls -l 中argv[0] = ls,argv[1] = -l);
3、env代表的是环境变量的字符串(各种路径)。
上面的答案都会根据计算机不同而不同
下面是我的测试程序
#include <stdio.h>

int main(int argc,char* argv[],char* env[])
{
        int i = 0;
        printf("argc = %d\n",argc);
        for(i = 0 ; i<argc ; i++)
        {
                printf("argv[%d]  =  %s\n",i,argv[i]);
        }
        for(i = 0; env[i] != NULL ; i++ )
        {
                printf("env[%d] =  %s\n",i,env[i]);
        }

        return 0;
}



答案如下(2个测试)
1、
veiker@veiker:~/MyCCode/TestMain$ ./TestMain Hello World
argc = 3
argv[0]  =  ./TestMain
argv[1]  =  Hello
argv[2]  =  World
env[0] =  ORBIT_SOCKETDIR=/tmp/orbit-veiker
env[1] =  SSH_AGENT_PID=1438
env[2] =  TERM=xterm
env[3] =  SHELL=/bin/bash
env[4] =  XDG_SESSION_COOKIE=dd0c4def56e676986822fd570000000a-1312552464.869925-2120270797
env[5] =  WINDOWID=52436834
env[6] =  GNOME_KEYRING_CONTROL=/tmp/keyring-I21Ag5
env[7] =  GTK_MODULES=canberra-gtk-module
env[8] =  USER=veiker
env[9] =  LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
env[10] =  SSH_AUTH_SOCK=/tmp/keyring-I21Ag5/ssh
env[11] =  DEFAULTS_PATH=/usr/share/gconf/gnome.default.path
env[12] =  SESSION_MANAGER=local/veiker:@/tmp/.ICE-unix/1407,unix/veiker:/tmp/.ICE-unix/1407
env[13] =  USERNAME=veiker
env[14] =  XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg
env[15] =  DESKTOP_SESSION=gnome
env[16] =  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
env[17] =  QT_IM_MODULE=xim
env[18] =  PWD=/home/veiker/MyCCode/TestMain
env[19] =  XMODIFIERS=@im=ibus
env[20] =  GDM_KEYBOARD_LAYOUT=us
env[21] =  LANG=zh_CN.utf8
env[22] =  GNOME_KEYRING_PID=1388
env[23] =  MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path
env[24] =  GDM_LANG=zh_CN.utf8
env[25] =  GDMSESSION=gnome
env[26] =  SHLVL=1
env[27] =  HOME=/home/veiker
env[28] =  LANGUAGE=zh_CN:zh
env[29] =  GNOME_DESKTOP_SESSION_ID=this-is-deprecated
env[30] =  LOGNAME=veiker
env[31] =  XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/
env[32] =  DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-YQvS7ue5P6,guid=296d7ee54d1d92811d99b6fa0000003b
env[33] =  LESSOPEN=| /usr/bin/lesspipe %s
env[34] =  WINDOWPATH=7
env[35] =  DISPLAY=:0.0
env[36] =  GTK_IM_MODULE=ibus
env[37] =  LESSCLOSE=/usr/bin/lesspipe %s %s
env[38] =  XAUTHORITY=/var/run/gdm/auth-for-veiker-3B1A9c/database
env[39] =  COLORTERM=gnome-terminal
env[40] =  OLDPWD=/home/veiker
env[41] =  _=./TestMain

2、
veiker@veiker:~/MyCCode/TestMain$ ./TestMain  -Hello World
argc = 3
argv[0]  =  ./TestMain
argv[1]  =  -Hello
argv[2]  =  World
env[0] =  ORBIT_SOCKETDIR=/tmp/orbit-veiker
env[1] =  SSH_AGENT_PID=1438
env[2] =  TERM=xterm
env[3] =  SHELL=/bin/bash
env[4] =  XDG_SESSION_COOKIE=dd0c4def56e676986822fd570000000a-1312552464.869925-2120270797
env[5] =  WINDOWID=52436834
env[6] =  GNOME_KEYRING_CONTROL=/tmp/keyring-I21Ag5
env[7] =  GTK_MODULES=canberra-gtk-module
env[8] =  USER=veiker
env[9] =  LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
env[10] =  SSH_AUTH_SOCK=/tmp/keyring-I21Ag5/ssh
env[11] =  DEFAULTS_PATH=/usr/share/gconf/gnome.default.path
env[12] =  SESSION_MANAGER=local/veiker:@/tmp/.ICE-unix/1407,unix/veiker:/tmp/.ICE-unix/1407
env[13] =  USERNAME=veiker
env[14] =  XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg
env[15] =  DESKTOP_SESSION=gnome
env[16] =  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
env[17] =  QT_IM_MODULE=xim
env[18] =  PWD=/home/veiker/MyCCode/TestMain
env[19] =  XMODIFIERS=@im=ibus
env[20] =  GDM_KEYBOARD_LAYOUT=us
env[21] =  LANG=zh_CN.utf8
env[22] =  GNOME_KEYRING_PID=1388
env[23] =  MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path
env[24] =  GDM_LANG=zh_CN.utf8
env[25] =  GDMSESSION=gnome
env[26] =  SHLVL=1
env[27] =  HOME=/home/veiker
env[28] =  LANGUAGE=zh_CN:zh
env[29] =  GNOME_DESKTOP_SESSION_ID=this-is-deprecated
env[30] =  LOGNAME=veiker
env[31] =  XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/
env[32] =  DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-YQvS7ue5P6,guid=296d7ee54d1d92811d99b6fa0000003b
env[33] =  LESSOPEN=| /usr/bin/lesspipe %s
env[34] =  WINDOWPATH=7
env[35] =  DISPLAY=:0.0
env[36] =  GTK_IM_MODULE=ibus
env[37] =  LESSCLOSE=/usr/bin/lesspipe %s %s
env[38] =  XAUTHORITY=/var/run/gdm/auth-for-veiker-3B1A9c/database
env[39] =  COLORTERM=gnome-terminal
env[40] =  OLDPWD=/home/veiker
env[41] =  _=./TestMain


从这次的测试中我终于知道了很多程序测试时带参数的方法,也晓得了带参数的程序的运行,我一请一直都不知道,这还得感谢表弟,回去请吃饭,呵呵呵
1
2
分享到:
评论

相关推荐

    Linux常用C函数

    Linux常用C函数(中文版) 字符测试篇 isalnum(测试字符是否为英文或数字) 相关函数 isalpha,isdigit,islower,isupper 表头文件 #include 定义函数 int isalnum (int c) 函数说明 检查参数c是否为英文...

    Linux c 函数

    isalnum(测试字符是否为英文或数字) 相关函数 表头文件 定义函数 函数说明 返回值 附加说明 范例 isalpha,isdigit,islower,isupper #include int isalnum (int c) 检查参数c是否为英文字母或阿拉伯数字,在标准...

    Linux高性能服务器编程

    15.6 用线程池实现的简单Web服务器 15.6.1 http_conn类 15.6.2 main函数 第三篇 高性能服务器优化与监测第16章 服务器调制、调试和测试 16.1 最大文件描述符数 16.2 调整内核参数 16.2.1 procsysfs目录下的...

    Linux系统编程之线程同步

    Linux中提供一把互斥锁mutex(也称之为互斥量)。 每个线程在对资源操作前都尝试先加锁,成功加锁才能操作,操作结束解锁。 资源还是共享的,线程间也还是竞争的, 但通过“锁”就将资源的访问变成互斥操作...

    宋劲彬的嵌入式C语言一站式编程

    2. main函数和启动例程 3. 变量的存储布局 4. 结构体和联合体 5. C内联汇编 6. volatile限定符 20. 链接详解 1. 多目标文件的链接 2. 定义和声明 2.1. extern和static关键字 2.2. 头文件 2.3. 定义和声明的详细规则 ...

    UNIX环境高级编程_第二版中文

    7.2 main函数  7.3 进程终止  7.4 命令行参数  7.5 环境表  7.6 C程序的存储空间布局  7.7 共享库  7.8 存储器分配  7.9 环境变量  7.10 setjmp和longjmp函数  7.11 getrlimit和setrlimit函数  ...

    UNIX环境高级编程_第2版.part1

    7.2 main函数147 7.3 进程终止147 7.4 命令行参数151 7.5 环境表152 7.6 c程序的存储空间布局152 7.7 共享库154 7.8 存储器分配154 7.9 环境变量157 7.10 setjmp和longjmp函数159 7.11 getrlimit和...

    UNIX环境高级编程_第2版.part2

    7.2 main函数147 7.3 进程终止147 7.4 命令行参数151 7.5 环境表152 7.6 c程序的存储空间布局152 7.7 共享库154 7.8 存储器分配154 7.9 环境变量157 7.10 setjmp和longjmp函数159 7.11 getrlimit和...

    MingW VC 之.a .lib .dll .def 关系

    (非常值得注意的是: 这个EXPORTS的函数名列表,有些情况下,你可能根本无法知道这些函数名的书写规则。不要总认为dumpbin中得到的名字就可以通用了。也不要认为pexports得到的def文件就不用修改了。事实上,如果我们...

    UNIX环境高级编程(第二版中文)

    7.2 main函数 147 7.3 进程终止 147 7.4 命令行参数 151 7.5 环境表 152 7.6 C程序的存储空间布局 152 7.7 共享库 154 7.8 存储器分配 154 7.9 环境变量 157 7.10 setjmp和longjmp函数 159 7.11 ...

    unix环境编程电子书

    139 6.7 其他数据文件 139 6.8 登录账户记录 140 6.9 系统标识 141 6.10 时间和日期例程 142 6.11 小结 146 习题 146 第7章 进程环境 147 7.1 引言 147 7.2 main函数 147 7.3 进程终止 147 7.4 ...

    UNIX环境高级编程

    7.2 main函数 147 7.3 进程终止 147 7.4 命令行参数 151 7.5 环境表 152 7.6 C程序的存储空间布局 152 7.7 共享库 154 7.8 存储器分配 154 7.9 环境变量 157 7.10 setjmp和longjmp函数 159 7.11 ...

    log4cplus 源码(C++编写的开源的日志系统)

    1. linux下安装 tar xvzf log4cplus-x.x.x.tar.gz cd log4cplus-x.x.x ./configure --prefix=/where/to/install make make install 这里我采用缺省安装路径:/usr/local,下文如无特别说明,均以此路径为准。 2. ...

    linux网路编程 中文 23M 版

    2.1 Linux环境下的编辑器................................................. 14 2.1.1 v i m使用简介...................................................14 2 . 1 . 2使用v i m建立文件............................

    中文第一版-UNIX环境高级编程

    7.2 main 函数 122 7.3 进程终止 122 7.3.1 exit和_exit函数 122 7.3.2 atexit函数 124 7.4 命令行参数 125 7.5 环境表 126 7.6 C程序的存储空间布局 126 7.7 共享库 127 7.8 存储器分配 128 7.9 环境变量 130 7.10 ...

    UNIX环境高级编程第二版

    7.2 main 函数 122 7.3 进程终止 122 7.3.1 exit和_exit函数 122 7.3.2 atexit函数 124 7.4 命令行参数 125 7.5 环境表 126 7.6 C程序的存储空间布局 126 7.7 共享库 127 7.8 存储器分配 128 7.9 环境变量 130 7.10 ...

    UNIX环境高效编程

    7.2 main 函数 122 7.3 进程终止 122 7.3.1 exit和_exit函数 122 7.3.2 atexit函数 124 7.4 命令行参数 125 7.5 环境表 126 7.6 C程序的存储空间布局 126 7.7 共享库 127 7.8 存储器分配 128 7.9 环境变量 130 7.10 ...

Global site tag (gtag.js) - Google Analytics