UNIX/Linux学习笔记(6)文件的管理

UNIX/Linux学习笔记(6)文件的管理

在之前小编学习了一点系统调用和一切设备皆文件的知识,这次小编想继续讲讲有关文件管理的内容

文件同步

1)缓冲区:

硬盘上一般都设有缓冲区,以此来提高数据写入的效率,当操作系统进行写入数据操作时其实先是把数据写入到缓冲区中,直到缓冲区满才排队写入到硬盘中。之所以提高了效率,是因为在缓冲区的帮助下减少了写入的次数,同时也减少了翻页的时间浪费,但是与此同时也提高了数据写入的延时,导致了缓冲区中的内容与磁盘中的内容不一致

2)文件同步函数:

void sync(void)
  功能:把所有缓冲区中的全部数据同步到磁盘

注意:此函数发布同步命令后立即返回,并非等到同步完成才返回

int fsync(int fd)
  功能:指定文件描述符为fd的文件的缓冲区数据同步到磁盘中
  返回值:成功返回0,失败返回-1

注意:此函数只针对一个文件,且在数据同步到磁盘后才返回

int fdatasync(int fd)
  功能:指定文件描述符为fd的文件的缓冲区数据同步到磁盘中,但并不同步文件的属性
  返回值:成功返回0,失败返回-1

文件控制fcntl

int fcntl(int fd, int cmd, …/* arg */)

这是一个变长参数的函数,随着操作指令cmd的不同,后续参数的个数和类型也不同,小编在此先不写有关锁的cmd参数
1)cmd = F_DUPFD

int fcntl(int fd, int cmd, long newfd)
功能:复制文件描述符
返回值:返回不小于newfd的文件描述符,若newfd已被使用并不会将其关闭,而是选择一个不比newfd小的且未使用的文件描述符

其实这个函数的功能与dup2很像,可以看下小编的笔记(5)

2)cmd = F_GETFD(void)

int fcntl(int fd, int cmd, void)
功能:取得close-on-exec标志
返回值:FD_CLOEXEC位为0,表示在另一个进程打开该文件,FD_CLOEXEC位为1则反之

3)cmd = F_SETFD(long)

int fcntl(int fd, int cmd, long)
功能:设置close-on-exec标志
返回值:成功返回0,失败返回-1

4)cmd = F_GETFL(void)

int fcntl(int fd, int cmd, void)
功能:获取文件的状态标志(open函数的flags标志)
注意:无法获取O_CREAT、O_EXCL、O_NOCTTY、O_TRUNC
返回值:表示文件状态标志的类整型,与各标志相与可得其文件状态

5)cmd = F_SETFL(long)

int fcntl(int fd, int cmd, long)
功能:设置文件的状态标志
注意:只能设置O_APPED、O_ASYNC、O_DIRET、O_NOATIME、O_NONBLOCK
返回值:成功返回0,失败返回-1

文件属性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值