UNIX环境高级编程——第三章

3.2 文件描述符

  1. UNIX shell使文件描述符0与进程的标准输入相结合,文件描述符 1与标准输出
    相结合,文件描述符2与标准出错输出相结合。这是 UNIX shell以及很多应用程序使用的惯例,而与内核无关
  2. ** 在P O S I X . 1应用程序中,幻数 0、 1、 2应被代换成符号常数 S T D I N _ F I L E N O、 S T D O U T _F I L E N O和S T D E R R _ F I L E N O。这些常数都定义在头文件< u n i s t d . h >中。**
  3. 文件描述符的范围是 0 ~ O P E N _ M A X (见表2 - 7 )。早期的U N I X版本采用的上限值是 1 9 (允许每个进程打开2 0个文件),现在很多系统则将其增加至6 3

3.3 open函数

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

int open(const char *pathname, int oflag, ...);

3.4 creat函数

此函数等效于:

open(pathname, O_WRONLY | O_CREAT | O_TRUNC, mode);

3.6 lseek 函数

  1. 按照系统默认,当打开一个文件时,除非指定O_APPEND选择项,否则该位移量被设置为0。
  2. 可以调用lseek函数显式地定位一个打开文件。
  3. #include <sys/types.h>
    #include <unistd.h>
    off_t lseek(int filedes, off_t offset, int whence);
    
    • 若whence是SEEK_SET,则将该文件的位移量设置为距文件开始处 offset 个字节;
    • 若whence是SEEK_CUR,则将该文件的位移量设置为其当前值加offset, offset可为正或负;
    • 若whence是SEEK_END,则将该文件的位移量设置为文件长度加offset, offset可为正或负;
    • 若lseek成功执行,则返回新的文件位移量

3.7 read函数

null

3.10 文件共享

在这里插入图片描述在这里插入图片描述

3.12 dup和dup2函数

没弄懂

3.13 fcntl函数

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

int fcntl(int filedes, int cmd, ...);
  • 复制一个吸纳村的描述符(cmd = F_DUPFD)
  • 获得/设置文件描述符标记(cmd = F_GETFD或F_SETFD)
  • 获得/设置文件状态标志(cmd = F_GETFL或F_SETFL)
  • 获得/设置异步I/O有权(cmd = F_GETOWN或F_SETOWN)
  • 获得/设置记录锁(cmd = F_GETLK, F_SETLK或F_SETLKW)
  • O_ACCMODE用于取出flag中的低两位,这两位用来说明文件状态标志中的write read

猜你喜欢

转载自blog.csdn.net/u012850592/article/details/103044071