unix-2

不带缓存 指的是每个read和write都调用内核中的一个系统调用。

文件描述符

1.  对于内核而言 ,所有打开文件都是由文件描述符应用。文件描述符是一个非负整数。当打开一个现存文件或者创建一个新文件时,内核向进程返回一个文件描述符。。
2.  UNIX shell使用文件描述符0与进程的标准输入相结合;文件描述符1与进程的标准输出相结合,文件描述符2与标准出错相结合。
3.  在POSIX.1中,在头文件<unistd.h> 中, 0 ----STDIN_FILENO,1 -----STDOUT_FILENO ,2 -----STDERR_FILENO.

open函数

1. 功能:打开或创建一个文件;
2. 在<fcntl.h>中定义: O_RDONLY 只读打开;O_WRONLY 只写打开 ; O_RDWR  读、写打开。
3. O_APPEND 每次都写到文件的尾端;O_CREAT 若此文件不存在则创建他; O_EXCL 如果同时指定了O_CREAT,则出错;O_TRUNC 清空;O_NONBLOCK 设置后续的IO操作为非阻塞;O_SYNC 每次IO操作都等到物理I/O操作完成。
4. 由open返回的文件描述符一定是最小的未用的操作符数字。
5. 文件名 NAME_MAX是14,当文件名的长度超过14的时候,由_POSIX_NO_TRUNC来决定是截取文件名或返回出出错,其值为真,返回初出错。

creat函数

1. 功能:创建一个新文件。
2. 相当于等效的:open(pathname,O_WRONLY|O_CREAT|O_TRUNC,mode);

close 函数

1. 功能:关闭一个文件
2. 关闭一个文件时也释放该进程在该文件上的所有记录锁。

lseek函数

1. off_t lseek(int fileds,off_t offset,int whence);
2. 判断lseek的值是否为-1,来确定文件的偏移是否正确
3. whence是SEEK_SET:该文件的位移量设置为距文件开始处offset个字节;
4. whence是SEEK_CUR:相对于当前位置的偏移量;
5. whence是SEEK_END:相对文件尾端的位移量。

read函数

1. 功能:从打开文件中读取数据
2. ssize_t read(in fileds,void buff,size_t nbytes);
3. read成功,则返回读到的字节数,如果已经到达文件的尾端,则返回04. ### write函数

功能:向文件写数据

1. ssize_t write(int fielses,const void buff,size_t nbytes);
2. write出错的一个常见原因是:磁盘已写满,或者超过了对一个给定进程的文件长度限制。
3. 通常是O_APPEND的选项,每次写操作之前,将文件位移量设置在文件的当前结尾处。

文件共享

文件描述符标志:只用于一个进程的一个描述符
文件状态标志:适用于指向该给定文件表项的任何进程中的所有描述符。

原子操作

1. 添加至一个文件
2. 任何一个要求多于1个函数调用的操作都不能成为原子操作,因为在两个函数调用之间,内核可能会临时挂起该进程。
3. 原子操作指的是由多步组成的操作,如果该操作原子地执行,则或者执行完所有步,或者一步也不执行,不可能只执行所有步的一个子集。

dup和dup2函数

1. int dup(int filedes)
2. int dup2(int filedes,int filedes2)
3. 由dup返回的新文件描述符一定是当前可用文件描述符中最小的数值。
文章目录
  1. 1. 文件描述符
  2. 2. open函数
  3. 3. creat函数
  4. 4. close 函数
  5. 5. lseek函数
  6. 6. read函数
  7. 7. 文件共享
  8. 8. 原子操作
  9. 9. dup和dup2函数
,