文件描述符

open函数

open()

//头文件
#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);
参数说明:
1.pathname
  要打开或创建的目标文件
2.flags
  打开文件时,可以传入多个参数选项,用下面的一个或者多个常量进行“或”运算,
  构成falgs参数:
  O_RDONLY:   只读打开
  O_WRONLY:   只写打开
  O_RDWR:     读,写打开
  以上三个参数必须指定一个。
  O_CREAT:    若文件不存在,则创建它,需要使用mode选项。来指明新文件的访问
              权限
  O_APPEND:   追加写,如果文件已经有内容,这次打开文件所写的数据附加到文件
              的末尾而不覆盖原来的内容
//返回值
成功:新打开的文件描述符
失败:-1
open返回的文件描述符一定是最小的而且没有被使用的

打开的文件描述符一定要记得关闭,否则资源会被大量的占用,关闭文件描述符用close()函数

0&1&2

linux进程默认情况下会打开三个文件描述符,分别是标准输入0,标准输出1,标准错误2。0,1,2分别对应的物理设备是键盘,显示器,显示器。

文件描述符

  1 #include<stdio.h>
  2 #include<sys/types.h>
  3 #include<sys/stat.h>
  4 #include<fcntl.h>
  5
  6 int main()
  7 {
  8     //close(0);
  9     int fd = open("myfile", O_RDONLY);
 10     if(fd<0)
 11     {
 12         perror("open");
 13         return 1;
 14     }
 15     printf("fd:%d\n",fd);
 16     close("fd");
 17     return 0;
 18 }

在这里插入图片描述
如果在open()之前,close(0)。
在这里插入图片描述
文件描述符的本质是数组下标,文件是数据,在打开文件时,操作系统就要将文件管理起来,操作系统要创建一个相应的数据结构来描述目标文件,file结构体,表示这个打开的文件。每个进程task_struct都有一个*file的指针指向一张表file_struct,这张表是一个指针数组,每一个元素是指向打开对应文件的指针。
在这里插入图片描述

重定向

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值