嵌入式学习day23 Linux

时间获取:

1.time

time_t time(time_t *tloc);

功能:

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

参数:

tloc:存放秒数空间首地址

返回值:

成功返回秒数

失败返回-1

2.localtime

struct tm *localtime(const time_t *timep);

功能:

将秒数转换为本地时间

参数:

timep:存放秒数空间首地址

返回值:

成功返回结构体时间

失败返回NULL

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.mktime

time_t mktime(struct tm *tm);

功能:

将本地时间转换为秒数

文件属性和权限的获取:

1.stat

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

功能:

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

参数:

pathname:文件路径字符串的首地址

statbuf:存放文件信息空间的首地址

返回值:

成功返回0

失败返回-1

struct stat {

dev_t st_dev; /* ID of device containing file */

ino_t st_ino; /* Inode number */

mode_t st_mode; /* File type and mode */

nlink_t st_nlink; /* Number of hard links */

uid_t st_uid; /* User ID of owner */

gid_t st_gid; /* Group ID of owner */

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 nanosecond

precision 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

};

/etc/passwd 口令文件

/etc/group 组信息文件

2.getpwuid

struct passwd *getpwuid(uid_t uid);

功能:

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

参数:

uid:用户的ID号

返回值:

成功返回包含用户信息的结构体

失败返回NULL

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 */

};

3.getgrgid

struct group *getgrgid(gid_t gid);

功能:

通过组ID获得组信息

参数:

gid:组的ID号

返回值:

成功返回包含组信息的结构体

失败返回NULL

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.readlink

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

功能:

读取连接文件本身的内容

参数:

pathname:链接文件的路径

buf:存放数据空间首地址

bufsiz:最大存放数据字节数

返回值:

成功返回读到字节个数

失败返回-1

软连接和硬链接:

1.软连接(符号链接)

通过文件名链接,所有能够看到的连接文件均为软连接文件

ln -s file.txt a.txt

2.硬链接

通过文件对应的inode节点链接

ln file.txt b.txt

相关推荐
颜酱8 小时前
图的数据结构:从「多叉树」到存储与遍历
javascript·后端·算法
zone773913 小时前
006:RAG 入门-面试官问你,RAG 为什么要切块?
后端·算法·面试
CoovallyAIHub16 小时前
OpenClaw 近 2000 个 Skills,为什么没有一个好用的视觉检测工具?
深度学习·算法·计算机视觉
CoovallyAIHub16 小时前
CVPR 2026 | 用一句话告诉 AI 分割什么——MedCLIPSeg 让医学图像分割不再需要海量标注
深度学习·算法·计算机视觉
CoovallyAIHub16 小时前
Claude Code 突然变成了 66 个专家?这个 5.8k Star 的开源项目,让我重新理解了什么叫"会用 AI"
深度学习·算法·计算机视觉
兆子龙16 小时前
前端哨兵模式(Sentinel Pattern):优雅实现无限滚动加载
前端·javascript·算法
xlp666hub19 小时前
Leetcode第五题:用C++解决盛最多水的容器问题
linux·c++·leetcode
CoovallyAIHub20 小时前
9个视觉语言模型工厂实测:Qwen 87.9%碾压全场,你的显卡能跑哪个?
算法
张宏23620 小时前
原子操作 (基于Linux 应用层 C 语言)
linux
SparkX开源AI知识库20 小时前
手摸手带你安装OpenClaw并对接飞书
算法·架构