- 目录IO
目录IO是指在计算机程序中对文件目录进行操作的一系列输入输出功能。这些操作允许程序创建、读取、修改和删除目录结构。在Unix/Linux系统和类似系统中,目录被视为特殊的文件,可以对其进行打开、读取、写入(修改)和关闭等操作。
- 目录IO相关函数接口
2.1 opendir
-
定义
-
功能
-
参数
-
返回值
-
示例程序
6.注意
2.2 closedir
-
定义
-
功能
-
参数
-
返回值
-
示例程序
6.注意
2.3 readdir
-
定义
-
功能
-
参数
struct dirent {
ino_t d_ino; /* Inode number */
off_t d_off; /* Not an offset; see below */
unsigned short d_reclen; /* Length of this record */
unsigned char d_type; /* Type of file; not supported
by all filesystem types */
char d_name[256]; /* Null-terminated filename */
};
-
返回值
-
示例程序
6.注意
2.4 mkdir
-
定义
-
功能
-
参数
-
返回值
-
示例程序
6.注意
2.5 umaks
-
定义
-
功能
-
参数
-
返回值
-
示例程序
6.注意
2.6 rmdir
-
定义
-
功能
-
参数
-
返回值
-
示例程序
6.注意
2.7 getcwd
-
定义
-
功能
-
参数
-
返回值
-
示例程序
6.注意
2.8 chdir
-
定义
-
功能
-
参数
-
返回值
-
示例程序
6.注意
2.9 stat
-
定义
-
功能
-
参数
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
};
-
返回值
-
示例程序
6.注意
2.10 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 */
};
-
返回值
-
示例程序
6.注意
2.11 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 */
};
-
返回值
-
示例程序
6.注意
- 链接文件
3.1 软链接文件(符号链接)
ln -s 被链接文件 链接文件名
通过文件名链接
3.2 硬链接文件
ln 被链接文件 链接文件名
通过文件在虚拟文件系统(VFS)中的inode节点链接
- 链接文件函数接口
4.1 symlink(创建软链接)
-
定义
-
功能
-
参数
-
返回值
-
示例程序
-
注意
4.2 link(创建硬链接)
-
定义
-
功能
-
参数
-
返回值
-
示例程序
-
注意
4.3 lreadink
-
定义
-
功能
-
参数
-
返回值
-
示例程序
-
注意
-
工程管理工具
5.1 在文件夹下编写一个名为makefile的脚本文件
makefile
Makefile
5.2 语法规则
要生成的文件:所有依赖的文件(中间以空格隔开)
生成方式
5.3 执行步骤
1.终端输入make
2.make执行对应目录下的makefile文件
3.生成makefile文件中第一个目标
4.查找所有依赖的文件是否都存在
5.如果存在则利用生成方式生成目标文件
makefile内部维护一个时间戳
5.4 makefile变量
$@:要生成的文件
$^:所有依赖的文件
$<:第一个依赖的文件
= 直接赋值
:= 覆盖赋值
+= 原来的基础上新加
?= 前面没有给变量赋值,则给变量赋等号后的值
变量已经有值,不会给变量赋新值