您的位置:首页 > 运维架构 > Linux

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

2013-04-14 15:43 239 查看
linux的I/O操作分为:

  不带缓存的I/O操作(read(),write(),open(),lseek(),close())。

  标准(带缓存)的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 open函数

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

    #include <fcntl.h>
   int  open(const char *pathname,int oflag,mode_t mode);
   返回值:
             成功:返回文件描述符
             出错:返回-1
  pathname:要打开或者要创建的文件名,
  oflag: O_RDONLY   只读打开
            O_WRONLY  只写打开
            O_RDWR      读写方式打开
以上三个常量必须指定一个且只能指定一个

            O_APPEND  每次写时都追加到文件的未端
            O_CREAT    若打开的文件不存在,则创建一个新文件,使用这个选项时,第三个参数mode指定创建新文件时的文件权限

LINUX的文件权限: r 可读取  w可写入   x可执行 -无权限  

文件权限的表示:  10个字符表示.如drwx------
  第一位:表示文件的类型
  第二位到第四位:表示文件所有者的访问权限
  第五位到第七位:表示文件所有者同组用户访问的权限
  第八位到第十位:表示其它用户的访问权限

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

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

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

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

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

            O_DSYNC

            O_RSYNC

            O_SYNC
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 编程 终端