微前端架构如何改变企业的开发模式与效率提升
557
2022-09-23
APUE ---文件和目录2
13、link, unlink , remove和rename函数
int link(const char *pathname, const char *newpath);
任何一个文件可以有多个目录项指向其i节点。此函数创建一个新目录项,它引用现有的文件,如果newpath已经存在,则出错。
注意:只创建newpath的最后一个分量,路径中的其他部分也应当存在。
int unlink(const char *pathname);
成功返回0,失败返回-1.
此函数删除目录项,并将由pathname所引用文件的链接数减 1,如果还有指向该文件的其他链接,则仍可以通过其他链接访问该文件的数据。如果出错,则不对该文件做任何更改。为了解除对该问价的链接,必须对包含该目录项的目录具有写和执行权限。
int remove(const char *pathname);
对于文件,此函数的功能和unlink相同。对于目录,与rmdir相同。
int rename(const char *oldname, const char *newname);
此函数更改文件或目录的名字,成功返回0,失败返回-1.
注意:
(1)如果oldname指的是一个文件而不是目录,则为该文件或符号链接更名。这时,如果newname已经存在但它是一个目录则出错,如果他不是目录,则将该目录项删除,然后将oldname改为newname。
(2)如果oldname指的是一个目录,如果newname已经存在,那么它必须引用一个目录并且要是空目录。如果newname已经存在并是一个空目录,则把该目录删除,然后oldname改为newname。另外当为一个目录更名时,newname不能包含newname作为其路径前缀。例如不能将/usr/foo更名为/usr/foo/testdir。
(3)如若oldname或newname引用符号链接,则处理的是符号链接本身。
(4)作为一个特例,如果oldname和newname引用同一文件,则函数不做任何更改成功返回。
14、符号链接
符号链接是指向一个文件的间接指针,硬链接是直接指向文件的i节点。符号链接以及它指向何种对象,并无任何文件系统限制。
注意:当使以名字引用文件的函数时,应当了解函数是否处理符号链接。使用符号链接可能是文件系统中引入循环
15、symlink和readlink函数
symlink函数创建一个符号链接
int symlink(const char *actualpath, const char *sympath);
此函数创建一个指向ctualpath的新目录项sympath,在创建符号链接时,并不要求ctualpath已经存在。
ssize_t readlink(const char *restrict pathname, char *restrict buf);
这个函数组合了 open,read,close的所有操作。
16、文件时间
对每个文件保持有三个时间字段
字段 |
说明 |
例子 |
st_atime |
文件数据的最后访问时间 |
read |
st_mtime |
文件数据的最后修改时间 |
write |
st_ctime |
i节点状态的最后更改时间 |
chmod, chown |
注意:修改时间和更改状态时间之间的区别。
修改时间是文件内容的最后一次修改
更改状态时间是i节点最后一次被修改的时间。
17、utime函数
一个文件的访问和修改时间可以用utime函数更改
#include
int utime(const char *pathname, const struct utime *times);
struct utime{
time_t actime;
time_t modtime
}
18、mkdir和rmdir函数
用mkdir函数创建目录,用rmdir函数删除目录
int mkdir(const char *pathname, mode_t mode);
int rmdir(const char *pathname)
注意:i节点的链接数为0时才被释放。
19、读目录
#include
DIR *opendir(const char *path);/*成功,返回指针*/
struct dirent *readdir(DIR *dp);
void rewinddir(DIR *dp);
int closedir(DIR*dp);
long telldir(DIR *dp);
void seekdir(DIR *dp, long loc);
struct dirent{
ino_t d_ino;
char d_name[NAME_MAX + 1];
}
20、chdir,fchdir,getcwd函数
通过调用chdir和fchdir可以改变当前的工作目录。
int chdir(const char *pathname);
int fchdir(int filedes);
因为当前工作目录是进程的一个属性,所以他只影响调用chdir的进程本身,而不影响其他进程。
char *getdwd(char *buf, size_t size);成功,返回buf,出错返回NULL
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~