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.rhkb.cn/news/261094.html

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

相关文章

Java Web(六)--XML

介绍 官网:XML 教程 为什么需要: 需求 1 : 两个程序间进行数据通信?需求 2 : 给一台服务器,做一个配置文件,当服务器程序启动时,去读取它应当监听的端口号、还有连接数据库的用户名和密码。spring 中的…

数据结构--红黑树详解

什么是红黑树 红黑树(Red Black Tree)是一种自平衡二叉查找树。它是在 1972 年由 Rudolf Bayer 发明的,当时被称为平衡二叉 B 树(symmetric binary B-trees)。后来,在 1978 年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。 由于其自平衡的特性,保证…

NBlog个人博客部署维护过程记录 -- 后端springboot + 前端vue

项目是fork的Naccl大佬NBlog项目,页面做的相当漂亮,所以选择了这个。可以参考2.3的效果图 惭愧,工作两年了也没个自己的博客系统,趁着过年时间,开始搭建一下. NBlog原项目的github链接:Naccl/NBlog: &#…

展示用HTML编写的个人简历信息

展示用HTML编写的个人简历信息 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document…

网贷大数据查询多了对征信有影响吗?

网贷大数据在日常的金融借贷中起到很重要的风控作用&#xff0c;不少银行已经将大数据检测作为重要的风控环节。很多人在申贷之前都会提前了解自己的大数据信用情况&#xff0c;那网贷大数据查询多了对征信有影响吗?本文带你一起去看看。 首先要说结论&#xff1a;那就是查询网…

【AI视野·今日Robot 机器人论文速览 第七十八期】Wed, 17 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Wed, 17 Jan 2024 Totally 49 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Safe Mission-Level Path Planning for Exploration of Lunar Shadowed Regions by a Solar-Powered Rover Authors Olivier L…

24-k8s的附件组件-Metrics-server组件与hpa资源pod水平伸缩

一、概述 Metrics-Server组件目的&#xff1a;获取集群中pod、节点等负载信息&#xff1b; hpa资源目的&#xff1a;通过metrics-server获取的pod负载信息&#xff0c;自动伸缩创建pod&#xff1b; 参考链接&#xff1a; 资源指标管道 | Kubernetes https://github.com/kuberne…

SpringMVC第一天

SpringMVC简介 1.导入spring-mvc坐标 <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.7</version></dependency> 2.在web.xml里配置DispatcherServlet前端控制器 …

dubbo源码中设计模式——注册中心中工厂模式的应用

工厂模式的介绍 工厂模式提供了一种创建对象的方式&#xff0c;而无需指定要创建的具体类。 工厂模式属于创建型模式&#xff0c;它在创建对象时提供了一种封装机制&#xff0c;将实际创建对象的代码与使用代码分离。 应用场景&#xff1a;定义一个创建对象的接口&#xff0…

【AI学习】LangChain学习

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

Spring Boot项目怎么对System.setProperty(key, value)设置的属性进行读取加解密

一、前言 之前我写过一篇文章使用SM4国密加密算法对Spring Boot项目数据库连接信息以及yaml文件配置属性进行加密配置&#xff08;读取时自动解密&#xff09;&#xff0c;对Spring Boot项目的属性读取时进行加解密&#xff0c;但是没有说明对System.setProperty(key, value)设…

5 Nacos本地启动配置

1、修改启动配置 修改nacos-console模块的application.properties,具体如下: 其中,url参数详见链接:

使用AndroidStudio调试Framework

1.前言 最近在工作过程中&#xff0c;涉及到FW的一些修改&#xff0c;比如PhoneWindowManager&#xff0c;只能通过加日志看打印的方式查看一些内容&#xff0c;比较低效&#xff0c;所以想了解一下FW的调试方式&#xff0c;后来发现AS就可以调试FW.我平时都是在Docker服务器编…

多目图像拼接算法

图像拼接一般要经过图像特征提取、特征匹配、融合等步骤来实现。 特征匹配与变换: SIFT(尺度不变特征变换)SURF(加速鲁棒特征)ORB(Oriented FAST and Rotated BRIEF)AKAZE(加速的KAZE特征)全景图像拼接算法: 基于特征匹配的拼接:利用特征点匹配找到重叠区域,然后进…

Rust 数据结构与算法:3栈:用栈实现符号匹配

1、符号匹配 如&#xff1a; (56)(78)/(43)、{ { ( [ ] [ ])}}、(ab)(c*d)func() 等各类语句的符号匹配。 这里我们关注的不是数字而是括号&#xff0c;因为括号更改了操作优先级&#xff0c;限定了语言的语义&#xff0c;这是非常重要的。如果括号不完整&#xff0c;那么整个…

数学建模:BP神经网络(含python实现)

原理 BP 神经网络&#xff0c;也称为多层感知机&#xff08;Multilayer Perceptron&#xff0c;MLP&#xff09;&#xff0c;是一种常见的神经网络模型&#xff0c;用于解决各种机器学习问题&#xff0c;包括分类和回归。BP 代表“反向传播”&#xff08;Backpropagation&#…

【Go map的底层实现原理?】

Go中的map是一个指针&#xff0c;占用8个字节&#xff0c;指向hmap结构体 源码包中src/runtime/map.go定义了hmap的数据结构&#xff1a; hmap包含若干个结构为bmap的数组&#xff0c;每个bmap底层都采用链表结构&#xff0c;bmap通常叫其bucket hmap结构体 // A header for…

Linux中alarm/setitimer函数(信号函数)

alarm函数 函数原型&#xff1a; unsigned int alarm(unsigned int seconds); 函数描述&#xff1a;设置定时器&#xff08;闹钟&#xff09;。在指定seconds后&#xff0c;内核会给当前进程发送 14&#xff09;SIGALRM信号。进程收到该信号&#xff0c;默认动作终止。每个进程…

判断一个dll/exe是32位还是64位

通过记事本判断&#xff08;可判断C或者C#&#xff09; 64位、将dll用记事本打开&#xff0c;可以看到一堆乱码&#xff0c;但是找到乱码行的第一个PE&#xff0c;如果后面是d?则为64位 32位、将dll用记事本打开&#xff0c;可以看到一堆乱码&#xff0c;但是找到乱码行的第…

服务网格Service Mesh和Istio

文章目录 服务网格&#xff08;Service Mesh&#xff09;市场上三种服务网格解决方案服务网格的特征流量管理安全性可观察性 Istio简介Istio提供了什么功能服务 &#xff1f;Istio 核心特性流量管理安全可观察性 平台支持 服务网格&#xff08;Service Mesh&#xff09; 服务网…