linux c 目录操作,linuxC文件以及目录操作函数

opendir --打开目录,返回DIR*指针,man 3 opendir 查看介绍,下面查看方法类似

readdir   --读取目录,返回struct dirent*结构体指针(dir entry)

closedir  --关闭目录DIR*

getcwd  --获取当前工作目录

下面是文件有关的函数:

stat  --获取文件属性,返回struct stat结构体,包括文件类型,大小修改时间,权限,用户id等等。能够透过符号链接

lstat  --类似stat,但是不能透过符号链接,也就是说如果是符号链接,就只是读到符号链接属性,不能读取到真实文件属性

access  --判断文件是否有某个权限(R_OK, W_OK, X_OK),也可以使用判断文件是否存在(F_OK)

chmod  --改变文件权限,第二个参数mode必须是一个8进制数,比如0755

chown  --改变文件所有者

rename  --重命名文件

truncate  --截取文件为指定长度,指定长度为0时,清空文件内容。

link  --创建一个硬链接,

symlink  --创建一个符号链接

readlink  --读取一个符号链接名称,是文件名称,不是文件内容,不能读取硬链接

unlink  --删除链接,如果是符号链接,直接删除符号链接。如果是硬链接,硬链接数减1,硬链接数为0时删除链接,所有也是删除文件的一种方法。注意:进程退出后才会真正的删除。

unlink由于需要等到进程退出后才会真正执行删除,所有一般用于删除程序运行时产生的临时文件,程序退出后,临时文件自动删除这个场景。

int fd = open("filename", O_CREAT | O_RDWR, 0755);  --打开一个文件,不存在时自动创建该文件,返回一个文件描述符

char* p= "this is test file\n";

write(fd, p, strlen(p));  -- strlen计算字符串长度,write写入文件

close(fd);  --关闭文件

fcntl函数:man 3 fcntl查看文档

int fcntl(int fd, int cmd);

int fcntl(int fd, int cmd, long arg);

int fcntl(int fd, int cmd, struct flock *lock);

cmd有以下几种情况:

复制文件描述符  -- F_DUPFD

文件描述符标记  -- F_GETFD、F_SETFD

文件状态     -- F_GETFL、F_SETFL

异步IO所有权   -- F_GETOWN、F_SETOWN (man 3 open 可在open函数里查看所有权限)

文件记录锁    -- F_GETLK、F_SETLK、F_SETLKW

int flags = fcntl(fd, F_GETFD);

flags |= FD_CLOEXEC;  //设置执行exec系列函数时自动关闭fd文件描述符

fcntl(fd, F_SETFD, flags)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值