Linux 系统 I/O编程-----不带缓存的I/O操作

Linux的I/O操作分为:

    1.   不带缓存的I/O操作(read(),write(),open(),lseek(),close())。
  1.   标准(带缓存)的I/O操作:(fgets(),fread(),fwrite()).

文件描述符:

  首先,在linux中对目录和设备都等同与于文件操作,LINUX中的文件主要分为:普通文件,目录文件,链接文件和设备文件,那么系统是怎么区分和引用特定的文件的呢?

  文件描述符---对LINUX而言,所有对设备和文件的操作都通过使用文件描述符进行的,在open已经存在的文件或者creat一个新的文件时,内核就会向进程返回一个文件描述符,以后要对该文件的操作都可以通过使用该文件描述符(将文件描述符做为参数传递给相应的读(read(),写write()函数)来进行.

  在lINUX系统中一个进程启动时都会打开3个文件:标准输入,标准输出,标准出错处理,分别对应文件描述符为0,1,2(宏替换STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO)

不带缓存操作的I/O操作函数:

  1. 1 open函数
        1.    功能:打开一个已经存在的文件或者创建一个新的文件. 函数原型如下

              #include <fcntl.h>
        2.    int  open(const char *pathname,int oflag,mode_t mode);
          1.    返回值:
          2.              成功:返回文件描述符
          3.              出错:返回-1
          4.   pathname:要打开或者要创建的文件名,
          5.   oflag: O_RDONLY   只读打开
          6.             O_WRONLY  只写打开
          7.             O_RDWR      读写方式打开
          8. 以上三个常量必须指定一个且只能指定一个
      1.             O_APPEND  每次写时都追加到文件的未端
      2.             O_CREAT    若打开的文件不存在,则创建一个新文件,使用这个选项时,第三个参数mode指定创建新文件时的文件权限
      3. LINUX的文件权限: r 可读取  w可写入   x可执行 -无权限  
    1. 文件权限的表示:  10个字符表示.如drwx------
    2.   第一位:表示文件的类型
    3.   第二位到第四位:表示文件所有者的访问权限
    4.   第五位到第七位:表示文件所有者同组用户访问的权限
    5.   第八位到第十位:表示其它用户的访问权限

新建文件的默认权限=新建文件的约定权限(linux 文件的约定权限是0666)-umask表示的权限

新建目录的默认权限=新建目录的约定权限(LINUX目录的约定权限是0777) - umask表示的权限

             O_TRUNC  如果文件存在,而且为只写或者读写的方式打开,则将文件的长度截短为0

             O_NOCTTY 如果pathname指的是终端设备 则不将这个设备作为此进程的控制终端

            O_NONBLOCK  如果pathname指的是一个FIFO,一个块特殊文件或者一个字符特殊文件,则此选项为文件的本次打开操作和后续的I/O操作设置非阻塞模式

            O_DSYNC

            O_RSYNC

            O_SYNC

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值