Linux程序设计第四章

前几天因为一些事耽搁了,今天学习第四章。
本章将学习:
1.向程序传递参数
2.环境变量
3.查看时间
4.临时文件
5.获得有关用户和主机的信息
6.生成和配置日志信息
7.了解系统各项资源的限制


4.1.1
X/open 规范定义了命令行选项的标准用法.,同时定义了在C语言程序中提供命令行开关的编程标准接口:getopt 函数.

#include<unistd.h>

int getopt(int argc,char *const argv[],const char *optstring);
extern char *optarg;
extern int optind,opterr,optopt;

getopt函数将传递给程序的main函数的argc和argv作为参数,同时接受一个选项指定字符串optstring,该字符串告诉getopt哪些选项可用,以及他们是否有关联值。optstring只是一个字符列表,每个字符代表一个单字符选项。如果一个字符后面紧跟一个冒号(:),则表明该选项有一个关联值作为下一个参数。例如:getopt(argc,argv,“if:lr”);它允许几个简单的选项:-i, -l,-r,-f ,其中-f选项后紧跟一个文件名参数。    getopt的返回值是argv数组中下一个选项字符(如果有)。循环调用getopt就可以依次得到每个选项。getopt有如下行为:
1.如果选项有一个关联值,则外部变量optarg指向这个值。
2.如果选项处理完毕,getopt返回-1,特殊参数--将使getopt停止扫描选项。
3.如果遇到一个无法识别的选项,getopt返回一个问号(?),并把它保存在外部变量optopt中。
4.如果选项要求有一个关联值,但用户并未提供这个值,那么getopt将在用户未提供值的情况下返回冒号,而不是问号。

该函数就是用来对命令行参数进行处理的,可以用循环来得到每个选项。详见Linux程序设计第四版 P117页。

4.1.2getopt_long
该函数接受双划线(--)开始的长参数。这里用到一个结构体struct option,表示长选项,描述了一个长选项的行为。该结构为
struct option
{
    const char *name;//长选项的名字
    int has_arg;//该选项是否有参数。0表示不带,1表示必须有一个参数,2表示必须有两个可选参数。
    int *flag;
    int val;
}


4.2环境变量

C语言中通过 putenv 和 getenv 函数来访问环境变量。
#include<stdlib.h>
char *getenv(const char *name);
int putenv(const char *string);
其中getenv返回的字符串存储在getenv提供的静态空间中,如果想要使用,必须先复制出来。以免被覆盖。

environ变量。
这是一个字符串数组,可以按如下声明它
#include<stdlib.h>
extern char **environ;
遍历这个数组可以打印出整个环境。

4.3时间和日期

time+_t是一个整型时间。包含头文件time.h

time_t  time(time_t *tloc);函数可以得到底层的时间值,返回的是从纪元开始至今的秒数.如果tloc不是一个空指针,time函数还会把返回值写入tloc指针指向的位置.

double difftime(time_t time1,time_t time2);计算这两个时间之间的差值.time1-time2.
gmtime函数把底层的时间值分解成一个结构.tm 结构.

4.4临时文件
#include<stdio.h>
char *tmpnam(char *s);返回一个不与任何已存在的文件同名的有效文件名。对该函数后续调用,会覆盖其静态区。
FILE *tmpfile(void);返回一个文件流指针,指向一个唯一的临时文件。该文件以读写方式打开,当对他的所有引用全部关闭时,文件自动删除。


好吧,就这样吧。其实我感觉,有很多东西,用着就熟,不用就忘,这是很自然的事情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值