linux c访问文件系统,linux上的c编程笔记-------文件系统的操作

linux的文件采用的是索引结构,文件存储在不连续的存储块中,这些块的块号记录于索引块中。索引块称为inode结构,inode结构中与用户有关的信息:

mode   ------   文件的权限及类型

link count   ------   包含本inode项的目录个数

user id    ------   文件所有者的用户id

group id    ------   文件所有者所在组的id

size   ------   文件大小

access time   ------   文件上次被访问的时间

mod time   ------   文件上次被修改的时间

block list   ------   包含文件第一段的磁盘块号列表

indirect list   ------   包含文件其它内容(除第一段)的磁盘块号列表

文件类型记录在stat结构中的st_mode域中,可以用以下的宏来决定文件类型,每个宏的参数是stat结构中的st_mode值

S_ISREG()   ------   正规文件

S_ISDIR()   ------   目录文件

S_ISCHR() ------    字符设备文件

S_ISBLK() ------    块设备文件

S_ISFIFO()------    有名管道文件

S_ISLNK()------     符号链接文件

S_ISSOCK()----     套接字文件

顺序文件操作

打开文件:

#include

#include

#include

int open(const char* pathname,int oflag,.../*mode_t mode*/);

正确返回:文件描述符

错误返回:-1

参数描述:

pathname:待打开或创建的文件名

oflag:如何打开文件,必须包含以下三个中的一个

O_RDONLY   ------   只读方式打开

O_WRONLY ------    只写方式打开

O_RDWR      -------    读写方式打开

还可以按位逻辑加( | )组合下列标志

O_APPEND        ------          每次写文件从文末开始

O_CREAT          ------           文件不存在则创建,必须带第三个参数mode设置新文件的访问方式

O_EXCL              ------          检查文件是否存在,以及不存在时创建文件的情况

O_TRUNC          ------          如果文件存在,而且以只写或读写方式打开,将文件长度截至0

mode:如果用open创建文件就要使用,其用来规定文件所以者、用户组、其它用户的访问权限。逻辑加组合下列常量

中定义

S_IRUSER         ------            文件所有者的读权限位

S_IWUSER       ------            文件所有者的写权限位

S_IXUSER        ------             文件所有者的执行权限位

S_IRGRP           ------             文件用户组的读权限位

S_IWGRP         ------             文件用户组的写权限位

S_IXGRP          ------              文件用户组的执行权限位

S_IROTH         ------              文件其它用户的读权限位

S_IWOTH       ------               文件其它用户的写权限位

S_IXOTH        ------               文件其它用户的执行权限位

还可以用下列常量设置set _uid位和set_gid位:

S_ISUID

S_ISGID

当一个进程代表你创建文件时,权限位由该进程相联系的umask值所修改,进程利用如下公式决定文件的实际权限位:

mode &(~umask);

posted on 2005-12-07 16:10 vivip 阅读(182) 评论(0)  编辑 收藏 引用 所属分类: 学习笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值