首页 > 其他分享 >系统调用(1)什么是文件描述符

系统调用(1)什么是文件描述符

时间:2024-04-04 16:58:56浏览次数:26  
标签:文件 调用 下标 IO 描述符 数组 进程

1.文件描述符

系统调用IO也叫文件IO

标准IO依赖于系统IO

文件描述符是在文件IO中贯穿始终的类型。

文件描述符(整型数,数组下标)

文件描述符是数组下标,之前我们曾经做过一个实验,不停的fopen打开文件,最多只能打开1021个,再加上三个(标准输出,标准输入,标准出错);一共1024个

这个1024就是数组大小,数组里面存放着地址,指向结构体,结构体里面是文件的一些信息。

1.文件描述符优先使用当前范围内最小下标 。

当123456数组下标都被使用后,然后关闭4,再打开的话那文件描述符就是4。

2.你将四中的地址复制到6,这时4和6都会指向同一个结构体,当4关闭时,4 6指向的同一个结构体会被关闭吗?不会,如果关闭那么6就会变成野指针。还因为文件信息里面除了位置指针还包含一个计数器。记录结构体引用的次数,当为0时,才会销毁这个结构体。引用计数:计数该结构体被引用的次数。(评论有人说这是硬连接的底层原理。)

一开始一个进程任何文件都不打开,但是012除外,这三个是stdin,stdout,stderr。但是012也是从父进程继承过来的,如果父进程没有或者在创建子进程的时候关闭某一个那么子进程或者将某一个重定向也不会有某一个文件描述符。

每一个进程都一个这样的数组。

当两个进程同时打开同一个文件,不会产生一个结构体,会产生两个结构体,当两个进程之间没有任何协议就对同一个文件进行读写的时候会造成竞争和冲突。

标签:文件,调用,下标,IO,描述符,数组,进程
From: https://blog.csdn.net/qq_63133692/article/details/137249394

相关文章

  • 韩顺平老师java坦克大战一些需要用到的东西(音乐文件、爆炸图片、音乐代码)(免费的!!!)
    首先非常感谢韩顺平老师的这个项目,虽然断断续续的完成了,但是收获很大,很有帮助。我的这些资源也是从别人那个弄来的,但是这个是整合版的。//音乐播放代码importjavax.sound.sampled.*;importjava.io.*;publicclassPlayAudioextendsThread{privateStringfi......
  • HttpClient 下载文件
    privatestaticasyncTaskDownloadFile(stringurl,stringfilePath){varprogressMessageHandler=newProgressMessageHandler(newHttpClientHandler());HttpRequestMessagehttpRequestMessage=new(){Method=HttpMethod.Get,Re......
  • 【Linux】Ubuntu 文件权限管理
    Linux系统对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功,这也是Linux有别于Windows的机制,也是基于这个权限机制,Linux可以有效防止病毒自我运行。因为运行的条件是必须要有运行的权限,而这个权限在Linux是用户所赋予的。文件权......
  • 在Linux中,文件和目录的权限有何作用以及如何修改?
    在Linux系统中,文件和目录的权限起着至关重要的作用,它们决定了哪些用户可以访问、修改或执行特定的文件或目录。这些权限确保了系统的安全性和稳定性,同时允许用户有效地管理他们的数据和资源。权限的作用:文件权限:读(r):允许用户查看文件的内容。写(w):允许用户修改文件的内容,包括添......
  • C语言中的文件和文件操作
    目录为什么使用文件什么是文件二进制文件和文本文件文件的打开和关闭文件的顺序读写文件的随机读写文件读取结束的判定文件缓冲区为什么使用文件 我们在写程序的时候会发现,在程序执行的过程中,变量在内存中开辟空间,并设置值,但是程序运行结束后,内存空间就会被回收,值......
  • 恶意下载文件
     在响应体中出现以下字段:Content-Type:application/octet-stream————————————————————————在某些下载文件的场景中,服务端可能会返回文件流,并在返回头中带上Content-Type:application/octet-stream,告知浏览器这是一个字节流,浏览器处理字节流的默......
  • node.js启动文件服务器 并自动查询index.html等默认文件
    方法1'usestrict';consthttp=require('http'),fs=require('fs'),url=require('url'),path=require('path');//从命令行参数获取root目录,默认是当前目录varroot=path.resolve(process.argv[2]||'.&......
  • 局域网配置共享文件夹,开机自动共享
    设置文件夹共享选择文件夹:首先,确定你想要共享的文件夹。共享文件夹:右键点击文件夹,选择“属性”,然后切换到“共享”标签页。点击“高级共享”,勾选“共享此文件夹”,并设置共享名称。配置用户权限在共享设置中,你可以通过点击“权限”按钮来设置哪些用户或用户组可以访问共享文......
  • idea建多级目录出现问题,报错找不到xml文件,如何解决?
    ......
  • DELPHI DLL的创建与调用.
    一.创建一个DLL项目 二.把验证过没有问题的函数写到DLL项目中 三.生成DLL 拿到了DLL 四.调用DLL通常DLL调用的声明语句都会写在 implementation之上或者之下,区别是作用域不同.唯一的要求是:声明语句必须要在调用语句之前!!!unitUnit1;interfaceusesWin......