Linux环境-程序参数&环境变量&时间和日期

main函数原型

int main(int argc, char *argv)

参数由上一级的程序调用传入,一般是shell,注意,Linux的shell一般会在设置argc和argv之前对文件名参数进行通配符拓展,而MS-DOS的shell则希望程序接受带通配符的参数,并执行自己的通配符。

通配符只有*,?,[],{}这4种

来自 <https://blog.csdn.net/youmatterhsp/article/details/80528761>

   

argv[]数组,程序名也作为参数,argv[0]就是程序名

命令行参数约定

0.所有的命令行都应该以一个短横线(-)开始,其后包含单个字母或数字

1.不带后续参数的选项可以下一个短横线后归并到一起,如 ls -lstr

2.如果某个选项需要参数,则参数应该紧跟在该选项之后

   

X/Open规范,提供了解析命令行选项的标准用法 getopt()函数

1 #include <unistd.h>
2 
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()函数可以处理非单个字符的 含义更明确的参数 接受以 -- 开头的长参数

 

环境变量&时间和日期

20191023

12:07

用来控制shell脚本与其他程序行为的变量,可以使用他们来配置用户环境。

标准环境变量包括终端类型、默认的编辑器、时区等

C语言可以通过putenv()getenv()函数来访问环境变量

1 #include <stdlib.h>
2 
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 #include<time.h>
2 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()格式化输出时间函数

   

  

posted @ 2020-01-15 19:45  MrWang_tju  阅读(946)  评论(0编辑  收藏  举报