Linux编程手册读书笔记第四章(20140407)

  1. 标准文件描述符定义在<unistd.h>中,STDIN_FILENO,  STDOUT_FILENO,  STDERR_FILENO
  2. 打开一个文件:open()

      include<sys/stat.h>

      #include<fcntl.h>

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

      1)调用发生错误,open返回-1,并将errno设置为相应的错误标志。

      2flags为位掩码,用于指定文件的访问模式,O_CREATE O_RDONLY, O_WRONLY,  O_RDWRO_APPEND;   注:因是位掩码,O_RDWR不等同于O_RDONLYO_WRONLY

      3mode为位掩码,用于指定文件的访问权限。如果open  flags参数并没有指定O_CREATE标志,则可以省略mode参数。

  1. O_EXCL,此标志与O_CREATE标志结合使用表明如果文件已经存在,则不会打开文件,且open()调用失败,返回错误,errnoEEXIST。换言之,此标志确保了调用者(open()的调用进程)就是创建文件的进程。
  2. 读取文件内容:read()

      include<unistd.h>

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

      1)如果read()调用成功,将返回实际读取的字节数,如遇到文件结束(EOF)则返回0

      2)从终端读取字符,一遇到换行符(\n),read()调用就会结束。

  1. 数据写入文件:write()

      include<unistd.h>

      ssize_t write(int fd, void * buffer, size_t count);

      write()调用成功,将返回实际写入文件的字节数

  1. 关闭文件:close()

      include<unistd.h>

      int close(int fd);

     close()可能执行失败:企图关闭一个未打开的文件描述符;或者两次关闭同一个文件描述符。

  1. size_t: 无符号整数类型;          ssize_t:有符号的整数类型; 
  2. 改变文件偏移量:lseek()

      #include<unistd.h>

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

     1)文件第一个字节的偏移量为0

     2offset:指定一个以字节为单位的数值, off_t:有符号整形数

     3whence:表明应参照哪个基点来解释offset参数。

            SEEK_SET: 将文件偏移量设置为从文件头部起始点开始的offset个字节

            SEEK_CUR: 相对于当前文件偏移量,将文件偏移量调整offset个字节

            SEEK_END: 将文件偏移量设置为起始于文件尾部的offset个字节,也就是说,offset参数应该从文件最后一个字节之后的下一个字节算起

     4lseek()调用成功会返回新的文件偏移量。

     5lseek()并不适用于所有类型的文件。不允许将lseek()应用于管道、FIFOsocket或者终端,一旦如此,errno返回ESPIPE

  1. 通用I/O模型以外的操作:ioctl()

      #include<sys/ioctl.h>

      int ioctl(int fd, int request, …/*argp*/);

      (1) request: 指定了将在fd上执行的控制操作。具体设备的头文件定义了可传递给request参数的常量。

    2ioctl根据request的参数值来确定argp所期望的类型。通常情况下,argp是指向整数或结构的指针。有些情况,不需要使用argp

    3ioctl5350上用于对于芯片的管脚进行I/O设置。常规使用场景是open-->ioctl-->close


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值