搜索
首页运维linux运维Linux下的文件标述符和文件指针的详细介绍

这篇文章主要介绍了详解Linux下的文件标述符和文件指针的相关资料,需要的朋友可以参考下

   Linux下的文件标述符和文件指针

文件标识符:

首先我们来了解一下文件标识符是什么东西?

文件描述符是计算机科学中的一个术语,是一个用于表述只想文件的引用的抽象化概念。

在linux当中,每个进程会在进程控制块(PCB)当中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表都有一个指

向已经打开文件的指针。

每个linux进程都应该有三个标准的文件描述符,对应三个标准流。

整数 名称 (unistd.h)符号常量 (stdio.h)文件流
0 Standard input STDIN_FILENO stdin
1 Standard output STDOUT_FILENO stdout
2 Standard error STDERR_FILENO stderr

文件描述符在形式上是一个非负整数,实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程

序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围

绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统

与文件描述符相关的操作:

功能 操作
文件描述符生成 open()、socket()、pipe()等
与单一文件描述符相关的操作 read()、write()、send()、fchmod()等
与复数文件描述符相关的操作 select()、poll()等
与文件描述符表相关度的操作 close()、dup()等


文件指针:

文件指针是C语言当中我们所学习的东西,C语言当中用一个指针变量指向一个文件,这个指针就被称为文件指针。通过文件指针我们可以对所指的文件进行各种的操作。C语言当中使用的是文件指针而不是文件描述符做为I/O的句柄。文件指针指向进程用户区中的一个被称为FILE结构的数据结构。FILE结构包含一个缓冲区和一个文件描述符。

文件指针式C语言的通用的格式,所以相对来说,更加便于移植.

我们通常来获取文件指针:

FILE *fp = fopen("test.txt","r");

获取到指针以后,我们就可以获得指针当中文件描述符的信息。

文件描述符是唯一的,但是文件指针不是唯一的,文件指针指向的对象是唯一的。

文件标述符和文件指针的转换:

int fileno(FILE *stream);

FILE *fdopen(int fd,const char *mode);

fdopen第一个参数是一个打开的文件描述符,mode是表示打开方式的字符串,和fopen相同,比如说“w”或者“r”.

fileno函数,它返回和文件流对应的文件描述符,失败返回-1。

以上是Linux下的文件标述符和文件指针的详细介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Debian中PHPStorm如何更新Debian中PHPStorm如何更新Apr 13, 2025 am 10:24 AM

在Debian系统中更新PHPStorm,可以参考以下步骤:卸载旧版本首先,需要卸载当前版本的PHPStorm。可以通过删除安装目录来实现。下载新版本访问JetBrains官网,下载最新版本的PHPStorm安装包。安装新版本解压下载的安装包到你想要的目录。复制ja-netfilter-all文件夹到解压后的PHPStorm目录下的bin文件夹中。打开ja-netfilte

如何在Debian上监控Zookeeper状态如何在Debian上监控Zookeeper状态Apr 13, 2025 am 10:21 AM

在Debian系统上监控Zookeeper的状态,可以通过以下几种方法:使用JMX(JavaManagementExtensions):Zookeeper支持通过JMX进行监控和管理。你可以通过JMX连接到Zookeeper服务器,并获取其运行状态和性能指标。首先,确保Zookeeper的JMX功能已经启用。这通常需要在启动Zookeeper时设置一些JVM参数,例如:-Dcom.s

如何在Debian上使用OpenSSL进行SSL/TLS握手如何在Debian上使用OpenSSL进行SSL/TLS握手Apr 13, 2025 am 10:18 AM

在Debian上使用OpenSSL进行SSL/TLS握手,你可以按照以下步骤操作:1.安装OpenSSL首先,确保你的Debian系统上已经安装了OpenSSL。如果没有安装,可以使用以下命令进行安装:sudoaptupdatesudoaptinstallopenssl2.启动OpenSSL客户端使用以下命令启动OpenSSL客户端:openssls_client

Debian Hadoop压缩格式怎么选Debian Hadoop压缩格式怎么选Apr 13, 2025 am 10:15 AM

在Debian系统中,Hadoop压缩格式的选择主要依赖于具体的业务需求和数据特性。以下是一些常见的压缩格式及其特点,以帮助您做出更明智的选择。压缩格式及其特点Gzip:优点:压缩率较高,压缩/解压速度较快,Hadoop本身支持,大部分Linux系统都自带gzip命令,使用方便。缺点:不支持分片。适用场景:适用于每个文件小于128MB(HDFS文件块大小)的场景,如与Hive、str

如何在Debian中集成GitLab与其他工具如何在Debian中集成GitLab与其他工具Apr 13, 2025 am 10:12 AM

在Debian中集成GitLab与其他工具可以通过以下步骤实现:安装GitLab更新系统包:sudoapt-getupdate安装依赖项:sudoapt-getinstall-ycurlopenssh-serverca-certificatestzdataperl添加GitLab官方仓库:curlhttps://packages.gitlab.co

Debian上GitLab的权限管理方法Debian上GitLab的权限管理方法Apr 13, 2025 am 10:09 AM

在Debian上管理GitLab的权限,通常涉及对用户、用户组、项目以及它们之间权限关系的配置。以下是一些基本步骤和方法:用户和用户组管理创建用户和用户组:使用useradd和groupadd命令来创建新用户和用户组。修改用户和用户组信息:使用usermod和groupmod命令来修改用户和用户组的信息。删除用户和用户组:使用userdel和groupdel命令来删

Debian上Zookeeper资源占用高怎么办Debian上Zookeeper资源占用高怎么办Apr 13, 2025 am 10:06 AM

当Debian上的Zookeeper资源占用高时,可以采取以下措施进行优化和排查:1.查看资源使用情况使用top或htop命令查看Zookeeper进程的内存和CPU使用情况。使用free-m命令查看系统的整体内存使用情况,包括缓存和缓冲区。2.分析资源占用高的原因应用程序层面的Bug:如内存泄漏。可以使用工具如valgrind来分析应用程序的使用情况,定位内存

PHPStorm在Debian上如何卸载PHPStorm在Debian上如何卸载Apr 13, 2025 am 10:03 AM

在Debian上卸载PHPStorm,可以参考以下步骤:使用APT包管理器卸载(如果通过APT安装)打开终端(Terminal)。输入以下命令来列出所有与PHPStorm相关的包:dpkg-l|grepphpstorm根据列出的包名,使用以下命令卸载PHPStorm:sudoapt-getremove--purgephpstorm清理残留的依赖关系:sudoap

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具