自学内容网 自学内容网

Linux应用软件编程-文件操作(文件io)

文件io:操作系统为了方便用户使用系统功能而对外提供的一组系统函数,称之为系统调用,其中有一组对文件的操作,称为文件IO,一般都是对设备文件操作,当然也可以对普通文件进行操作。
即一个基于Linux内核的没有缓存的IO机制。
 

这里主要说一下文件io的操作方法(函数接口):

1.打开文件:

  int open(const char *pathname, int flags);

  int open(const char *pathname, int flags, mode_t mode);

  功能:打开一个文件,获取一个文件描述符

  参数:   

    pathname:要打开的文件

    flags:
                O_RDONLY : 只读
                O_WRONLY: 只写
                O_RDWR :  读写
                O_CREAT :不存在则创建
                O_TRUNC : 清空文件
                O_APPEND:追加写

                "r"          : O_RDONLY;
                "r+"        : O_RDWR ;
                "w"        :  O_WRONLY  |  O_CREAT |  O_TRUNC ;  0664
                "w+"      : O_RDWR  |  O_CREAT |  O_TRUNC ;   0664
                "a"         : O_WRONLY | O_CREAT | O_APPEND; 0664
                "a+"       : O_RDWR | O_CREAT | O_APPEND;   0664
                  
        mode:对文件的操作权限,当flags中有 O_CREAT标志时,必须填写mode参数(0777)

  返回值:成功:文件描述符;失败:-1

  文件描述符:系统为已打开的文件分配的标识符,是一个非负的整形数据,为0-1023;最小未被使用原则;使用完时及时释放,避免文件描述符溢出。

  系统默认已经打开的3个文件描述符:
int                                                                                        FILE *
STDIN_FILENO------->0 :  标准输入设备                -----》(stdin)
STDOUT_FILENO---->1 :标准输出设备               -----》(stdout)
STDERR_FILENO---->2:标准出错设备                -----》(stderr)

2.文件读写:

 (1)ssize_t write(int fd, const void *buf, size_t count);

    功能:向文件中写入数据

    参数:

      fd:要写入的文件描述符

      buf:写入的数据首地址

      count:期望写入的字节数 

    返回值:成功:实际写入的字节数;失败:-1

(2)ssize_t read(int fd, void *buf, size_t count);

    功能:从文件中读数据

    参数:

      fd:需要读的文件描述符

      buf:存储读到数据的空间首地址

      count:期望读取的字节数

    返回值:成功:实际读取的字节数;失败:-1;读到文件末尾:0

3.文件定位函数:

off_t lseek(int fd, off_t offset, int whence);

功能:实现文件操作位置偏移

参数:

    fd:文件

    offset:偏移量

    whence:偏移的相对位置:SEEK_SET,SEEK_CUR,SEEK_END

    返回值:成功:返回文件当前操作位置到文件开头的偏移量;失败:-1

4.关闭文件:

int close(int fd);

功能:关闭文件描述符


原文地址:https://blog.csdn.net/hc_bmxxf/article/details/144725925

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!