嵌入式开发不常用但好用的函数
一.int stat(const char *pathname, struct stat *statbuf); //linux中一切皆文件
输入:pathname 文件绝对路径,
输出:statbuf 返回的文件状态
返回:成功返回0,失败返回-1
struct stat {
dev_t st_dev; /*文件所在磁盘的ID*/
ino_t st_ino; /*inode 节点号 */
mode_t st_mode; /*文件类型及模式*/
nlink_t st_nlink; /* 连接此文件的连接数(硬链接) */
uid_t st_uid; /*拥有该文件的用户*/
gid_t st_gid; /*拥有该文件的用户组 */
dev_t st_rdev; /* 设备号,针对设备文件*/
off_t st_size; /*文件的大小,以字节为单位*/
blksize_t st_blksize; /* 系统块大小*/
blkcnt_t st_blocks; /*文件所占的块数*/
struct timespec st_atim; /*文件上一次被访问的时间*/
struct timespec st_mtim; /* 文件的内容上一次被修改的时间*/
struct timespec st_ctim; /* 文件的权限、属主、组或内容上一次被修改的时间*/
#define st_atime st_atim.tv_sec /* Backward compatibility */
#define st_mtime st_mtim.tv_sec /*最后一次修正的时间*/
#define st_ctime st_ctim.tv_sec
};
与此类似的函数还有两个
int fstat(int fd, struct stat *statbuf);
int lstat(const char *pathname, struct stat *statbuf);
这三个区别,stat传入的是文件绝对路径,fstat传入的是文件描述符,lstat检测的是软连接或硬连接的连接文件的属性,而stat与fstat获取的是连接文件连接到的原文件的信息
二.int isdigit(int c);判断c是否为十进制数0-9
多线程读写函数
ssize_t pread(int fd, void *buf, size_t count, off_t offset);
ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);
相当于先lseek再read与write,但不同的是pread与pwrite是原子操作,所以pread与pwrite可在多线程中操作