zoukankan      html  css  js  c++  java
  • open()函数

    STDOUT_FILENO            1 标准输入

    STDIN_FILENO             0 标准输出

    STDERR_FILENO         2 标准错误

     在/proc目录下的进程文件中,有一个fd的目录记录每打开一个文件里面会有一个文件标示文件,名称以数字开始0 ,1,2....最大好像是65535

    包括标准输入,输出,错误字符设备文件

    /dev/pts/1

    /dev/pts/1 标准输出设备1表示第一个ssh远程连接的编号,

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>

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

    对于open函数来说,第三个参数仅当创建新文件时(即 使用了O_CREAT 时)才使用,用于指定文件的访问权限位(access permission bits)。

    pathname 是待打开/创建文件的POSIX路径名(如/home/user/a.cpp);

    flags 用于指定文件的打开/创建模式,这个参数可由以下常量(定义于fcntl.h)通过逻辑位或逻辑构成。

    O_RDONLY只读模式
    O_WRONLY只写模式
    O_RDWR读写模式
    上述三种标志位是互斥的,也就是不可同时使用,但可与下列的标志位利用OR(|)运算符组合。
     
    O_CREAT若欲打开的文件不存在则自动建立该文件。
    O_EXCL如果O_CREAT也被设置,此指令会去检查文件是否存在。文件若不存在则建立该文件,否则将导致打开文件错误。此外,若O_CREAT与O_EXCL同时设置,并且欲打开的文件为符      号连接,则会打开文件失败。
    O_NOCTTY如果欲打开的文件为终端机设备时,则不会将该终端机当成进程控制终端机。
    O_TRUNC若文件存在并且以可写的方式打开时,此标志位会令文件长度清为0,而原来存于该文件的资料也会消失。
    O_APPEND当读写文件时会从文件尾开始移动,也就是所写入的数据会以附加的方式加入到文件后面。
    O_NONBLOCK以不可阻断的方式打开文件,也就是无论有无数据读取或等待,都会立即返回进程之中。
    O_NDELAY同O_NONBLOCK。
    O_SYNC以同步的方式打开文件。
    O_NOFOLLOW如果参数pathname所指的文件为一符号连接,则会令打开文件失败。
    O_DIRECTORY如果参数pathname所指的文件并非为一目录,则会令打开文件失败。

    参数mode 

    此为Linux2.2以后特有的标志位,以避免一些系统安全问题。参数mode 则有下列数种组合,只有在建立新文件时才会生效,
    此外真正建文件时的权限会受到umask值所影响,因此该文件权限应该为(mode-umaks)。
     
    例子:


    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <errno.h>
    #include <string.h>
    int main(void)
    {

      char a[] = {"abc.txt"};
      int fd = open(a , O_RDONLY);

      if(fd == -1)
      {
        printf("%s " , strerror(errno));//判断open是否成功
      }
      else
      {
        printf("%d " , fd);
        close(fd);//打开完毕后记得关闭文件
      }

      return EXIT_SUCCESS;
    }

     
     
  • 相关阅读:
    神经网络(2)---neurons and the brain
    P2P system:How Chord tackles failures
    如何成为更好的自己
    P2P system: Chord
    P2P system: FastTrack and BitTorrent
    P2P system: GNUTELLA
    P2P system: Napster
    P2P system: Introduction
    幸福公开课(2)
    MTV与MVC 多对多表的创建方式 前后端传输数据编码格式 ajax 批量插入数据 自定义分页器
  • 原文地址:https://www.cnblogs.com/yuankaituo/p/4323477.html
Copyright © 2011-2022 走看看