zoukankan      html  css  js  c++  java
  • Linux系统编程--文件IO操作

    Linux思想即,Linux系统下一切皆文件。

    一、对文件操作的几个函数

    1.打开文件open函数

    int open(const char *path, int oflags);

    int open(const char *path, int oflags,mode_t mode);

    – 参数path表示:路径名或者文件名。路径名为绝对路径名。

    – 参数oflags表示:打开文件所采取的动作。

     下面几个为常用参数:

    O_RDONLY文件只读;O_WRONLY文件只写;O_RDWR文件可读可写;O_NOCTTY如果路径指向终端,则不将设备作为此进程的控制终端;O_NDELAY非阻塞方式操作文件。

    – mode表示:设置创建文件的权限。权限的宏定义很麻烦,可以直接用数字替代

    – 返回值:出错返回-1;否则返回文件句柄

    2.打开文件creat函数(其主要作用为创建文件):

    • int creat(const char * pathname, mode_t mode);

    – 参数path表示:路径名或者文件名。路径名为绝对路径名。

    – 参数oflags表示:打开文件所采取的动作。

    • O_RDONLY文件只读;O_WRONLY文件只写;O_RDWR文件可读可写

    3.关闭文件close函数:

      int close(int fd);

    参数为打开文件的句柄

    4.写文件write函数:

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

    – 参数fd表示:使用open 函数打开文件之后返回的句柄。

    – 参数*buf表示:写入的数据

    – 参数count表示:最多写入字节数

    – 返回值:出错-1,;其它数值表示实际写入的字节数

    5.读文件read函数:

    • ssize_t read(int fdvoid *buf,size_t len);

    – 参数fd:使用open 函数打开文件之后返回的句柄

    – 参数*buf:读出的数据保存的位置

    – 参数len:每次最多读len 个字节

    – 返回值:错误返回-1,执行成功返回实际读取值

    二、代码编写

    对文件的操作一般必需要用到以下几步:

    1、对文件的IO操作需要的头文件基本是一样的,都需要用到以下几个头文件。实际编程中我们可以从终端里通过man命令查找然后复制过来直接用。例如,在Ubuntu终端里输入man 2 read 后就可以查到关于read的用户手册,其中对read的详细介绍就包括头文件等等。其他函数用相同的方法都可查询到。

    #include <stdio.h>

    #include <sys/types.h>

    #include <sys/stat.h>

    #include <fcntl.h>

    #include <unistd.h>

    #include <string.h>

    2、在主函数里面定义一个整形的变量,来保存open返回的句柄值;

    3、定义字符串,保存文件路径;

    4、为后面要用到的读写函数创建缓冲区数组,或ssize_t变量

    5、采用一个if语句判断打开文件是否正确,正确返回句柄值,不正确打印提示信息;

    6、文件打开正确后,调用相应的读写函数,传入正确参数进行相应的读写操作。

    7、文件进行读写完操作后一定要通过close函数关闭,否则文件一直被占用就会影响其他程序的运行。

    三、运行结果

    1、open运行结果

    /

    2、creat运行结果

    3、read运行结果

    4、write运行结果

    用vi打开/bin下的testwrite文件可以看到如下图所示

  • 相关阅读:
    2013-10-31 《问题儿童居然一天两更!?》
    2013-10-31 《October 31st, 2013》
    2013-10-31 《三天里什么都没干……总之把目前为止的代码发了吧……》
    日怎么没人告诉我这博客可以改博文界面的显示宽度的
    俗话说打脸哦不打铁要趁热所以记录下替换图片的方法
    GUI好看码难写不是难写是难看我是说码难看不是GUI
    虽然保持了连续代码生产量但是仔细想想也没什么必要
    重写了电话本代码全面更新居然连续三天每天一个程序
    专注写字典三十年问你怕未又被编码卡了简直难以置信
    我就写个字典居然卡了两天重申一遍文字编码日你大爷
  • 原文地址:https://www.cnblogs.com/liming1593/p/5245705.html
Copyright © 2011-2022 走看看