- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一些相关的概念,即文件指针、流和文件描述符。
我知道文件指针是指向数据类型 FILE
的指针(在例如 FILE.h
Và struct_FILE.h
中声明)。
我知道文件描述符是 số nguyên
,例如成员(member)_fileno
của FILE
(Và _IO_FILE
).
Đối vớithe subtle difference between stream Và tài liệu , 我仍然在学习。
但来自 đây ,我不清楚“文件状态标志”是否适用于另一种类型的实体。
具体来说,我不知道“文件状态标志”是否适用于 FILE
, 到文件描述符,或者什么。
我正在寻找显示细节的官方引用资料。
有关的:
What's the difference between a file descriptor and file pointer?
Whats is difference between file descriptor and file pointer?
What is the concept behind file pointer or the stream pointer?
Specification of file descriptors (我问过这个)
difference between file descriptor and socket file descriptor
1 Câu trả lời
文件句柄
当您第一次访问某个网站时,该网站可能会向您的浏览器提供 cookie。此 cookie 的值将根据浏览器 future 的请求自动提供给网站。
这个 cookie 的值对你来说可能是胡言乱语,但它对那个特定的 web 服务器有意义。它被称为 session ID,它是在某种数据库中查找记录的键。此记录称为 session 。
session 允许 Web 服务器根据较早的请求和较早请求的结果对一个请求使用react。例如,它允许服务器知道浏览器在较早的请求中向服务器提供了凭据,并且这些凭据已成功通过身份验证。这就是为什么每次您想在 StackOverflow 上以特定用户的身份发布/投票/编辑时都不需要重新提供凭据的原因。
cookie 的值,即 session ID,是一个不透明的值。它对你没有任何意义。它唯一有用的方法是将其提供回提供给您的 Web 服务器。将它提供给另一个 Web 服务器不会实现任何有用的东西。它只是一种识别存在于另一个系统中的资源的方法。
当另一个系统是操作系统时,我们将这些识别资源的不透明值称为“句柄”。这绝不是句柄这个词唯一一次这样使用,但它是最常见的。与 session id cookie 为 Web 服务器提供一种将 Web 请求链接在一起的方式非常相似,句柄为操作系统提供了一种将系统调用链接在一起的方式。有各种资源的句柄。有 window Handlebars 。有分配的内存缓冲区的句柄。还有文件句柄。
通过在对 đọc
的多次调用中使用相同的文件句柄或 write
,操作系统知道上一个停止的位置,从而知道从哪里继续。它还知道您有权访问您正在读取或写入的文件,因为这些检查是在打开文件时完成的。
文件句柄不仅仅用于普通文件。文件句柄还可以引用管道、套接字或许多其他事物之一。创建句柄后,您只需要告诉操作系统您要从中读取或写入它,它就会使用句柄来查找执行此操作所需的信息。
文件描述符
这是 unix 世界中文件句柄的名称。 mở
(2) 据说返回一个文件描述符。 đọc
(2) 据说取一个文件描述符。
FILE*
又名 FILE
指针又名文件指针
这也是一个文件句柄。但与文件描述符不同,它不是来自操作系统。一个 FILE*
是一个 C 库文件句柄。你不能通过 FILE*
ĐẾN đọc
(2) (一个系统调用) 比你可以将文件描述符传递给 fread
的次数更多(3)(一个C库函数)。
你永远不应该访问 FILE
的成员,假设它甚至有任何。像所有 handle 一样,它对接收它的人来说是不透明的。它是一个你看不到的盒子。违反此约定的代码不可移植,并且可能随时中断。
大多数 C 库文件句柄引用一个包含文件描述符的对象。 (由 fmemopen
Và open_memstream
返回的没有。)它还包括对缓冲的支持,可能还有更多。
文件状态标志
这不是您永远需要使用的术语。这是我第一次听到。或者也许我只是忘记听了,因为它并不重要。在链接文档中,它用于指代一组常量。可以为某些参数提供该组中某些常量的某些组合,为各种系统调用提供。请参阅每个系统的文档以了解它可以接受哪些标志,以及这些标志对它的意义。
流
早些时候,我将文件句柄与 session ID 进行了比较。如果 session ID 允许 Web 服务器查找 session ,那么用于查找的文件句柄是什么? C 库 I/O 函数的文档将其称为流。
流是一个松散的术语,通常指的是不确定长度的序列。它是通信中常用的术语,指的是在写入者/发送者/生产者和阅读者/接收者/消费者之间进行通信的数据。
流是按顺序访问的,无论是出于必要还是因为方便。跳转到流中不同点的可能性不会自动取消使用该术语的资格。就像我上面提到的,这是一个松散的术语。
流的长度通常是未知的。它甚至可能不为发件人所知。以一个可能从其他流中动态生成流的任务为例。一条流甚至可以无限长。有时,流的长度是可知的,但只是被忽略。有时,长度是已知的,但不是可用单位。从流中读取可变长度行的程序可能无法对以字节为单位的流长度做任何有用的事情。
以两个程序通过管道通信为例 cat
.我们可以将通过管道的数据称为流。发送方可能知道也可能不知道它最终会发送多少字节/行/消息。发送方将发送一些字节,然后再发送一些字节,直到它最终发出信号表示不会再发送。读者通常不知道生产者最终会发送多少字节/行/消息。它将获得一些字节,然后再获得更多,直到最终通知它已到达流的末尾。
有时,更多的是关于如何处理数据。例如,从文件中读取通常被视为从流中读取。虽然可以获得文件的长度,但通常会忽略此信息。相反,忽略此信息的程序只是不断地从文件句柄中提取字节或行,直到它接收到到达流末尾的指示为止。
随机访问是文件不被视为流的一个例子。随机访问是指从文件的任意位置检索数据的做法。当一个人拥有在文件中找到的内容的索引时,可能会这样做。索引是键与文件中由该键标识的项目的位置之间的某种映射。例如,如果我知道在文件的某个位置找到了与用户有关的数据,我可以从操作系统请求文件的那部分,而不是从一开始就读取文件。
关于c - "file pointer"、 "stream"、 "file descriptor"和... "file"之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61911258/
我需要修复 getLineNumberFor 方法,以便如果 lastName 的第一个字符位于 A 和 M 之间,则返回 1;如果它位于 N 和 Z 之间,则返回 2。 在我看来听起来很简单,但我不
您好,感谢您的帮助!我有这个: 0 我必须在每次点击后增加“pinli
Javascript 中是否有一种方法可以在不使用 if 语句的情况下通过 switch case 结构将一个整数与另一个整数进行比较? 例如。 switch(integer) { case
我有一列是“日期”类型的。如何在自定义选项中使用“之间”选项? 最佳答案 请注意,您有2个盒子。 between(在SQL中)包含所有内容,因此将框1设置为:DATE >= startdate,将框2
我有一个表,其中包含年、月和一些数字列 Year Month Total 2011 10 100 2011 11 150 2011 12 100 20
这个问题已经有答案了: Extract a substring between double quotes with regular expression in Java (2 个回答) how to
我有一个带有类别的边栏。正如你在这里看到的:http://kees.een-site-bouwen.nl/ url 中类别的 ID。带有 uri 段(3)当您单击其中一个类别时,例如网页设计。显示了一
这个问题在这里已经有了答案: My regex is matching too much. How do I make it stop? [duplicate] (5 个答案) 关闭 4 年前。 我
我很不会写正则表达式。 我正在尝试获取括号“()”之间的值。像下面这样的东西...... $a = "POLYGON((1 1,2 2,3 3,1 1))"; preg_match_all("/\((
我必须添加一个叠加层 (ImageView),以便它稍微移动到包含布局的左边界的左侧。 执行此操作的最佳方法是什么? 尝试了一些简单的方法,比如将 ImageView 放在布局中并使用负边距 andr
Rx 中是否有一些扩展方法来完成下面的场景? 我有一个开始泵送的值(绿色圆圈)和其他停止泵送的值(簧片圆圈),蓝色圆圈应该是预期值,我不希望这个命令被取消并重新创建(即“TakeUntil”和“Ski
我有一个看起来像这样的数据框(Dataframe X): id number found 1 5225 NA 2 2222 NA 3 3121 NA 我有另一个看起来
所以,我正在尝试制作正则表达式,它将解析存储在对象中的所有全局函数声明,例如,像这样 const a = () => {} 我做了这样的事情: /(?:const|let|var)\s*([A-z0-
我正在尝试从 Intellivision 重新创建 Astro-Smash,我想让桶保持在两个 Angular 之间。我只是想不出在哪里以及如何让这个东西停留在两者之间。 我已经以各种方式交换了函数,
到处检查但找不到答案。 我有这个页面,我使用 INNER JOIN 将两个表连接在一起,获取它们的值并显示它们。我有这个表格,用来获取变量(例如开始日期、结束日期和卡号),这些变量将作为从表中调用值的
我陷入了两个不同的问题/错误之间,无法想出一个合适的解决方案。任何帮助将不胜感激 上下文、FFI 和调用大量 C 函数,并将 C 类型包装在 rust 结构中。 第一个问题是ICE: this pat
我在 MySQL 中有一个用户列表,在订阅时,时间戳是使用 CURRENT_TIMESTAMP 在数据库中设置的。 现在我想从此表中选择订阅日期介于第 X 天和第 Y 天之间的表我尝试了几个查询,但不
我的输入是开始日期和结束日期。我想检查它是在 12 月 1 日到 3 月 31 日之间。(年份可以更改,并且只有在此期间内或之外的日期)。 到目前为止,我还没有找到任何关于 Joda-time 的解决
我正在努力了解线程与 CPU 使用率的关系。有很多关于线程与多处理的讨论(一个很好的概述是 this answer )所以我决定通过在运行 Windows 10、Python 3.4 的 8 CPU
我正在尝试编写 PHP 代码来循环遍历数组以创建 HTML 表格。我一直在尝试做类似的事情: fetchAll(PDO::FETCH_ASSOC); ?>
Tôi là một lập trình viên xuất sắc, rất giỏi!