Linux文件

open

Linux文件_第1张图片
int fd=open("test.txt",O_RDWR|O_CREAT);

  1. 创建不加mode时,在文件不存在的情况下,默认创建文件权限是000——因为是系统调用接口,所以权限是000也是可以理解的;mode是需要用户自己给的
  2. 但是还有一个问题,这个是创建+读写打开如果需要打开的文件本身不存在,创建的是000权限的文件,文件是不允许读写——就会报错
    综上:调用系统接口创建文件的时候必须要加mode

fopen创建文件权限

Linux文件_第2张图片

open创建文件权限

未加mode创建

Linux文件_第3张图片

加mode创建文件

Linux文件_第4张图片
综上:open创建文件必须加mode,如果不给权限,什么都干不了

  1. mode只能在O_CREAT之后使用,也就是只能在创建的时候使用,只要文件已经生成就不能在修改权限
  2. O_CREAT | O_RDONLY , O_CREAT | O_WRONLY , O_CREAT | O_RDWR 都是可以加mode的

lseek

Linux文件_第5张图片

whence——偏移类型(三选一)他们本质是设置,但是他们用途不同
SEEK_SET:该文件的偏移量设为离文件开头offset个字节
SEEK_CUR:该文件的偏移量设为其当前值加offset(PS :offest可正负).
SEEK_END:该文件的偏移量设为文件长度加offset


文件描述符

概念

当需要使用文件的时候,OS创建struct file,将描述信息添加进pcb的struct files_struct 中使用数组进行管理,使用数组下角标进行标识文件

重定向

使用dup2(new_fd,old_fd)进行替换,最后留下的是new_fd;重定向的本质是new_fd空间所表示的信息复制给old_fd空间,从而达到重定向的作用

性质

  1. FILE结构一定封装了fd

Linux文件_第6张图片


lseek优秀文章
先fork后open,先open后fork的区别

你可能感兴趣的:(linux,open,重定向)