这篇文章主要介绍了详解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中文网其他相关文章!

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

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

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

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

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

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

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

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


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

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

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

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

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Dreamweaver Mac版
视觉化网页开发工具