Advanced Programming in UNIX Environment Episode 16

来源:互联网 发布:ug10钻孔编程 编辑:程序博客网 时间:2024/05/21 21:32

stat结构成员st_size表示以字节为单位的文件长度。此字段值对普通文件、目录文件和符号链接有意义。
truncate和fruncate是文件截断函数。

#include <unistd.h>int truncate(const char *pathname, off_t length);int ftruncate(int fd, off_t length);

这两个函数将一个现有文件长度截断为length。
link、linkat、unlink、unlinkat和remove
任何一个文件可以有多个目录项指向其i节点。创建一个指向现有文件的链接方法是使用link函数或linkat函数。

#include <unistd.h>int link(const char *existingpath, const char *newpath);int linkat(int efd, const char *existingpath, int nfd, const char *newpath, int flag);

这两个函数创建一个新目录项newpath,他引用现有文件existingpath。如果newpath已经存在,则返回出错。只创建newpath中的最后一个分量,路径中的其他部分应当已经存在。

#include <unistd.h>int unlink(const char *pathname);int unlinkat(int fd, const char *pathname, int flag);

删除目录项,并将有pathname所引用文件的链接计数减1。如果对该文件还有其他链接,则仍可能通过其他链接访问该文件的数据。如果出错,则不对该文件做任何更改。

#include "apue.h"#include <fcntl.h>int main(void){    if(open("tempfile",O_RDWR)<0)        err_sys("open error");    if(unlink("tempfile")<0)        err_sys("unlink error");    printf("file unlinked\n");    sleep(15);    printf("done\n");    return 0;}

我们也可以用remove函数解除对一个文件或目录的链接。对于文件,remove的功能与unlink相同。对于目录,remove的功能与rmdir相同。

阅读全文
0 0
原创粉丝点击