linux学习笔记二,文件操作

在一般的文件操作中,一般分为三个步骤,打开文件、操作文件、关闭文件。下面我们就安装这三个步骤讲解:


一、打开文件。


#include 
    
    
     
     
#include 
     
     
      
      
#include 
      
      
       
       

int open(const char *path, int oflags);
int open( const char *path, int oflags, mode_t mode);
      
      
     
     
    
    
参数说明, path: 要打开的文件名
oflags: 用于指定打开文件所采取的动作
mode: 用于指定文件打开后的操作权限。


oflags,文件操作模式有大概以下几种:
1.O_RDONLY 以只读方式打开
2.O_WRONLY 以只写方式打开
3.O_RDWR 以读写方式打开
4.O_APPEND 把写入数据追加在文件的末尾
5.O_TRUNC: 把文件的长度设置为零,丢弃已有的内容。
6.O_CREAT: 如果需要,就按参数mode中给出的访问模式创建文件。
7.O_EXCL: 与O_CREAT一起使用,确保条用者创建出文件。

其中1-3为3中基础操作模式,后面4-7都需要配合前面3种使用。

mode, 当操作文件可能不存在时,需要使用oflags 6 来创建文件,而文件的各种权限则需要参数mode来申明
S_IRUSR: 读权限,文件属主
S_IWUSR: 写权限,文件属主
S_IXUSR: 执行权限,文件属主
S_IRGRP: 读权限,文件所属组
S_IWGRP: 写权限,文件所属组
S_IXGRP: 执行权限,文件所属组
S_IROTH: 读权限,其他用户
S_IWOTH: 写权限,其他用户
S_IXOTH: 执行权限,其他用户


二、文件操作

1、write 系统调用
#include 
     
     
      
      

size_t write(int fildes, const void *buf, size_t nbytes);
     
     

参数说明: fildes: 文件描述符(文件句柄),指明需要操作文件的一个标识
一般是open() 返回的,或者是标准
buf: 缓存字段,用于存储操作的字符串,
nbytes: 每次缓冲的字符串的最大长度。

2、read系统调用
#include 
      
      
       
       

size_t read(int fildes, void *buf, size_t nbytes);

      
      

参数说明:
fildes: 文件描述符(文件句柄),指明需要操作文件的一个标识
一般是open() 返回的,或者是标准
buf: 缓存字段,用于存储操作的字符串,
nbytes: 每次缓冲的字符串的最大长度。

三、文件的关闭
#include 
       
       
        
        

int close(int fildes);

       
       

参数说明:
fildes: 文件描述符(文件句柄),指明需要操作文件的一个标识


四、其他操作

1、ioctl系统调用
#include 
      
      
       
       

int ioclt(int fildes, int cmd, ...);
      
      
在linux系统中,anyting is file, 所以当要对硬件进行操作时,这个方法就比较实用
它提供了一个用于控制设备及其描述符行为和配置底层服务的接口。终端、文件描述符、套接字甚至磁带机都可以有为它们定义的ioctl。
使用示例,在Linux系统上对ioctl的如下嗲用讲打开键盘上的LED灯:
ioctl (tty_fd, KDSETLED, LED_NUM | LED_CAP | LED_SCR);

2、lseek系统调用

#include 
     
     
      
      
#include 
      
      
       
       

off_t lseek(int fildes, off_t offset, int whence);
      
      
     
     
lseek的调用是对文件描述符fildes的读写指针进行设置。
参数说明: fildes,不再赘述。
offset, 用来指定位置(偏移量)
whence,定义offset偏移值的用法。可以有以下取值:
SEEK_SET: 绝对位置
SEEK_CUR: 相对当前位置的offset
SEEK_END: 相对文件尾的offset

3、fstat、stat和lstat系统调用

#include 
     
     
      
      
#include 
      
      
       
       
#include 
       
       
        
        


int fstat(int fildes, struct stat *buf);
int stat(const char *path, struct stat *buf);
int lstat(const char *path, struct stat *buf);
       
       
      
      
     
     
fstat系统调用返回与打开的文件描述符相关的文件的状态信息,该信息将会写到参数buf中


4、dup和dup2系统调用
#include 
     
     
      
      

int dup(int fildes);
int dup2(int fildes, int fildes2);
     
     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值