Linux-时间接口-005

学习重点:

1.函数接口
2.【ls-l】命令的实现

1【time】

1.1函数原型

【time_t time(time_t *tloc);】

1.2函数功能

返回1970-1-1到现在的秒数(格林威治时间)

1.3函数参数

1.3.1【tloc】

存放秒数空间首地址
存放的秒数:如果【tloc】非空,返回值也会存储在tloc指向的内存中;自【1970-01-01 00:00:00+0000(UTC)】时起到现在的秒数。

1.4返回值

【成功】:返回秒数
【失败】:返回-1 

1.5源码示例

在这里插入图片描述

2【localtime】

2.1函数原型

【struct tm *localtime(const time_t *timep);】

2.2函数功能

将秒数转换为本地时间

2.3函数参数

2.3.1【timep】

存放秒数空间首地址

2.4返回值

【成功】:返回结构体时间
【失败】:返回NULL
包含时间信息的结构体(详见【man】手册【man localtime】):
struct tm {
int tm_sec;    /* Seconds (0-60) */
int tm_min;    /* Minutes (0-59) */
int tm_hour;   /* Hours (0-23) */
int tm_mday;   /* Day of the month (1-31) */
int tm_mon;    /* Month (0-11) */
int tm_year;   /* Year - 1900 */
int tm_wday;   /* Day of the week (0-6, Sunday = 0) */
int tm_yday;   /* Day in the year (0-365, 1 Jan = 0) */
int tm_isdst;  /* Daylight saving time */
};

2.5源码示例

在这里插入图片描述

注意:

(1)【tm】结构体中的年份:是从【1990】年计算的,要得到正确年份,则应【+1990】。
(2)【tm】结构体中的月份:是从【0】开始计算的,要得到正确月份,则应【+1】。

3【mktime】

3.1函数原型

【time_t mktime(struct tm *tm);】

3.2函数功能

将本地时间转换为秒数

3.3函数参数

3.3.1【tm】

包含时间信息的结构体,用于输入本地时间。结构体说明(详见【man】手册:【man mktime】):
struct tm {int tm_sec;    /* Seconds (0-60) */int tm_min;    /* Minutes (0-59) */int tm_hour;   /* Hours (0-23) */int tm_mday;   /* Day of the month (1-31) */int tm_mon;    /* Month (0-11) */int tm_year;   /* Year - 1900 */int tm_wday;   /* Day of the week (0-6, Sunday = 0) */int tm_yday;   /* Day in the year (0-365, 1 Jan = 0) */int tm_isdst;  /* Daylight saving time */
};

3.4返回值

【成功】:返回时间(time_t类型)
【失败】:返回-1(time_t类型)

3.5源码示例

在这里插入图片描述

4文件属性获取

【man 2 stat】
【man 7 inode】

4.1【stat】

4.1.1函数原型

【int stat(const char *pathname, struct stat *statbuf);】

4.1.2函数功能

将pathname对应的文件信息放入statbuf中

4.1.3函数参数

4.1.3.1【pathname】
文件路径字符串的首地址
4.1.3.2【statbuf】
存放文件信息空间的首地址
结构体说明(详见【man】手册,【man stat】):
struct stat {dev_t     st_dev;         /* ID of device containing file(文件所在设备的 ID) */ino_t     st_ino;         /* Inode number (文件对应 inode 节点编号)*/mode_t    st_mode;        /* File type and mode(文件对应的模式) */nlink_t   st_nlink;       /* Number of hard links(文件的链接数) */uid_t     st_uid;         /* User ID of owner(文件所有者的用户 ID) */gid_t     st_gid;         /* Group ID of owner(文件所有者的组 ID) */dev_t     st_rdev;        /* Device ID (if special file) 设备号(指针对设备文件)*/off_t     st_size;        /* Total size, in bytes */blksize_t st_blksize;     /* Block size for filesystem I/O */blkcnt_t  st_blocks;      /* Number of 512B blocks allocated *//* Since Linux 2.6, the kernel supports nanosecondprecision for the following timestamp fields.For the details before Linux 2.6, see NOTES. */struct timespec st_atim;  /* Time of last access */struct timespec st_mtim;  /* Time of last modification */struct timespec st_ctim;  /* Time of last status change */#define st_atime st_atim.tv_sec      /* Backward compatibility */
#define st_mtime st_mtim.tv_sec
#define st_ctime st_ctim.tv_sec
};
【st_dev】:文件所在的设备。
【st_ino】:文件的【inode】号。
【st_mode】:文件的模式,如【文件类型】【文件权限】都记录在该变量中。
【st_nlink】:记录文件的【硬链接数】,即为该文件创建了多少个硬链接文件。
【st_uid】:文件所有者的用户ID。 
【st_gid】:文件所有者的组ID。
【st_rdev】:该变量记录了设备号,设备号只针对于设备文件,包括字符设备文件和块设备文件。
【st_size】:该变量记录了文件的大小,以字节为单位。
【st_atim】:该变量记录了文件最后被访问的时间,是【struct timespec】类型变量。
【st_mtim】:该变量记录了文件内容最后被修改的时间,是【struct timespec】类型变量。
【st_ctim】:该变量记录了文件状态最后被改变的时间,是【struct timespec】类型变量。

4.1.4返回值

【成功】:返回0 
【失败】:返回-1 

4.1.5文件属性详解

既然【stat】函数是获取指定路径文件的属性,那么使用【stat】函数的关键在于要知道文件有那些属性。
4.1.5.1文件类型

4.2【getpwuid】

4.2.1函数原型

【struct passwd *getpwuid(uid_t uid);】

4.2.2函数功能

通过UID获得对应的用户信息

4.2.3函数参数

4.2.3.1【uid】
用户的ID号

4.2.4返回值

【成功】:返回包含用户信息的结构体
【失败】:返回NULL
结构体说明(详见【man】手册:【man getpwuid】):
struct passwd {char   *pw_name;       /* username */char   *pw_passwd;     /* user password */uid_t   pw_uid;        /* user ID */gid_t   pw_gid;        /* group ID */char   *pw_gecos;      /* user information */char   *pw_dir;        /* home directory */char   *pw_shell;      /* shell program */
};

4.3【getgrgid】

4.3.1函数原型

【struct group *getgrgid(gid_t gid);】

4.3.2函数功能

通过组ID获得组信息

4.3.3函数参数

4.3.3.1【gid】
组的ID号

4.3.4返回值

【成功】:返回包含组信息的结构体
【失败】:返回NULL
结构体说明(详见【man】手册:【man getgrgid】):
struct group {char   *gr_name;        /* group name */char   *gr_passwd;      /* group password */gid_t   gr_gid;         /* group ID */char  **gr_mem;         /* NULL-terminated array of pointers to names of group members */
};

4.4【readlink】

4.4.1函数原型

【ssize_t readlink(const char *pathname, char *buf, size_t bufsiz);】

4.4.2函数功能

读取连接文件本身的内容

4.4.3函数参数

4.4.3.1【pathname】
链接文件的路径
4.4.3.2【buf】
存放数据空间首地址
4.4.3.3【bufsiz】
最大存放数据字节数

4.4.4返回值

【成功】:返回读到字节个数
【失败】:返回-1 

4.5链接属性

4.4.1软连接(符号链接)

通过文件名链接,所有能够看到的连接文件均为软连接文件
【ln -s file.txt a.txt】 

4.4.2硬链接

通过文件对应的【inode】节点链接     
【ln file.txt b.txt】 

4.6写一个程序实现【ls-l】命令

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/484417.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot集成Mqtt发送消息

1. MQTT简介 MQTT是一种物联网消息协议,为Message Queuing Telemetry Transport的缩写,即消息队列传输探测,协议基于发布订阅模式进行通信,有开销低、带宽小、轻量的特点,通常应用在物联网数据采集、移动应用、智能硬…

pandas/geopandas 笔记:判断地点在不在路网上 不在路网的点和路网的距离

0 导入库 import osimport pandas as pd pd.set_option(display.max_rows,5)import osmnx as oximport geopandas as gpd from shapely.geometry import Point 1 读取数据 假设我们有 如下的数据: 1.1 新加坡室外基站位置数据 cell_stationpd.read_csv(outdoor…

面试答疑03

1、登录鉴权怎么做的?为什么采用jwt的方式?有什么好处? Java登录鉴权常见的实现方式包括**CookieSession、HTTP Basic Authentication、ServletJDBC**等。 在Java的Web应用中,登录鉴权是确认用户身份的关键环节。一个常用的传统…

《探索网校 App 的魅力世界:知识与科技的完美结合》

在数字化时代,教育也在经历着深刻的变革。网校 App 的出现,正为学习者们开启了一扇通往知识的新大门,它融合了科技的力量,让学习变得更加便捷、高效和有趣。 一、功能与优势 网校 App 提供了丰富多样的学习功能,满足了…

Vue 中 onclick和@click区别

文章目录 一、直接上结论二、验证代码&#xff0c;可直接运行三、点击结果 一、直接上结论 onclick 只能触发 js的原生方法&#xff0c;不能触发vue的封装方法click 只能触发vue的封装方法&#xff0c;不能触发js的原生方法 二、验证代码&#xff0c;可直接运行 <!DOCTYP…

11-树-二叉树的前序遍历

这是树的第11篇算法&#xff0c;力扣链接。 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3] 做了这么久的树问题&#xff0c;现在开始回忆三种遍历方法&#xff0c;这篇文章…

【嵌入式学习】IO进程线程day02.22

一、思维导图 二、习题 1> 将互斥机制的代码实现 #include <myhead.h>//定义一个全局变量 char str[128]"我是一个全局字符串数组"; //1、创建一个互斥锁变量 pthread_mutex_t mutex;//线程1 void *pth1(void *arg) {//上锁pthread_mutex_lock(&mutex…

为新固态硬盘安装操作系统

目录 背景方案具体步骤1 为新硬盘进行分区2 下载Dism3 下载win10的iso文件4 通过Dism 重装系统5 从biso调整启动顺序5 遗留问题 参考资料 背景 情况是这样的&#xff0c;我的电脑本来就有一块sata的固态硬盘&#xff0c;作为c盘&#xff0c;装载的是win10系统。 一方面只有500…

matlab代码--基于matlabLDPC-和积译码系统

LDPC编码 一个码长为n、信息位个数为k的线性分组码&#xff08;n,k&#xff09;可以由一个生成矩阵 来定义&#xff0c;信息序列 通过G被映射到码字XS.G。线性分组码也可以由一个校验矩阵 来描述。所以码字均满足 。校验矩阵的每一行表示一个校验约束 &#xff0c;其中所有的非…

springboot大学生体质测试管理系统源码和论文

大学生体质测试管理系统提供给用户一个简单方便体质测试管理信息&#xff0c;通过留言区互动更方便。本系统采用了B/S体系的结构&#xff0c;使用了java技术以及MYSQL作为后台数据库进行开发。系统主要分为系统管理员、教师和用户三个部分&#xff0c;系统管理员主要功能包括首…

(全注解开发)学习Spring-MVC的第三天

全注解开发 第一部分 : 1.1 消除spring-mvc.xml 这些是原来spring-mvc.xml配置文件的内容 <!--1、组件扫描, 使Controller可以被扫描到--><context:component-scan base-package"com.itheima.controller"/><!--2、非自定义的Bean, 文件上传解析器--&…

尝试一下最新的联合办公利器ONLYOffice

下载下来一起试试吧 桌面安装版下载地址&#xff1a;https://www.onlyoffice.com/zh/download-desktop.aspx) 官网地址&#xff1a;https://www.onlyoffice.com 普通Office对联合办公的局限性 普通Office软件&#xff08;如Microsoft Office、Google Docs等&#xff09;在面对…