main函数原型
int main(int argc, char *argv)
参数由上一级的程序调用传入,一般是shell,注意,Linux的shell一般会在设置argc和argv之前对文件名参数进行通配符拓展,而MS-DOS的shell则希望程序接受带通配符的参数,并执行自己的通配符。
通配符只有*,?,[],{}这4种
来自
argv[]数组,程序名也作为参数,argv[0]就是程序名
命令行参数约定
0.所有的命令行都应该以一个短横线(-)开始,其后包含单个字母或数字
1.不带后续参数的选项可以下一个短横线后归并到一起,如 ls -lstr
2.如果某个选项需要参数,则参数应该紧跟在该选项之后
X/Open规范,提供了解析命令行选项的标准用法 getopt()函数
1 #include2 3 int getopt(int argc,char *const argv[],const char *optstring); 4 extern char* optarg; 5 extern int optint,opterr,optopt;
P117有使用getopt()函数的例程.
getopt_long()函数可以处理非单个字符的 含义更明确的参数 接受以 -- 开头的长参数
环境变量&时间和日期
2019年10月23日
12:07
用来控制shell脚本与其他程序行为的变量,可以使用他们来配置用户环境。
标准环境变量包括终端类型、默认的编辑器、时区等
C语言可以通过putenv()和getenv()函数来访问环境变量
1 #include2 3 char *getenv(const char *name); 4 int putenv(const char *string);
环境由一组格式为"名字-值"的字符串组成,getenv函数以给定的名字搜索环境中的一个字符串,并返回该名字相关的值。 请求变量不存在or无关联值 返回null
设置环境仅对程序本身有效,不会反映到外部环境中,这是因为变量的值不会从子进程传递到父进程(shell)
程序可以通过environ变量直接访问这个字符串数组获得当前的环境变量
时间和日期
所有的UNIX系统都使用同一个时间和日期的起点,即格林尼治时间1970年1月1日0点,其他所有的时间均是以那时经过的秒数来衡量。
时间通过一个预定义的time_t来处理,定义在time.h头文件中'
1 #include2 time_t time(time_t *tloc);
测算某些事情的持续时间,可以调用difftime()函数,返回值为一个double类型的数据
double difftime(time_t time1,time_t time2);
将时间分解为一个结构,返回世界标准时间
返回当地时间,需要使用 struct tm *localtime(const time_t *timeval);函数
将tm结构转换成原始数据,使用mktime()函数
使用asctime()函数,返回日期字符串。ctime()函数用于读取当地时间,返回字符串 相当于 asctime(loacltime(timeval))
strftime()格式化输出时间函数