gpt4 book ai didi

file - 什么是文件句柄以及它对程序员有用的地方?

转载 作者:行者123 更新时间:2023-12-04 01:45:27 30 4
gpt4 key购买 nike

我正在与 C 一起学习汇编语言。我开始的这一新章节讨论了“文件句柄”、用于屏幕显示的文件句柄和用于键盘输入的文件句柄等。我不知道什么是文件句柄?我指的是 Peter Abel 的 IBM PC ASSEMBLY LANGUAGE PROGRAMMING

最佳答案

在计算机软件 API 的上下文中,有一个通用概念通常称为“句柄”。在评论中,您可能已经找到了 Wikipedia article on that subject 的链接。 .

您正在处理句柄数据类型的特定实现——从 int 0x21 返回的 IBM PC/DOS 文件句柄。界面。如果您想了解有关这些特定文件句柄的更多信息,您可能需要查阅本书 Undocumented DOS ,其中详细介绍了允许您进一步研究这些句柄的内存数据结构。

另一种特定类型的句柄是从名为 open() 的 POSIX 标准接口(interface)返回的文件描述符。 .此功能在 Linux、Windows NT、Mac OS 和许多其他系统等平台上的 C 运行时库中实现。调用 open() 返回的整数可能不是负数。

除非您在 DOS 下运行,否则您的文件句柄可能是由 Windows NT 操作系统提供的。这些文件句柄是从 CreateFile() 返回的。 (用于打开和创建文件),从该函数返回的句柄的唯一非法值是 INVALID_HANDLE_VALUE .即,Windows NT API 可能会返回(通过强制转换)一个“负”整数,尽管它已经打开了文件。

在所有这些情况下,文件句柄用于引用一些跟踪文件打开方式的数据结构。跟踪的一件重要事情是当前文件位置。位置或指针在 POSIX 中由 lseek() 设置。函数并由 tell() 读取功能。任意 read()write()从当前文件指针的位置开始。

您的程序可以在两个不同的句柄下打开同一个文件。在这种情况下,每个句柄的文件指针是不同的。使用 lseek() 更新一个句柄的文件指针不会影响到同一文件的另一个句柄的文件指针。

Undocumented DOS

关于file - 什么是文件句柄以及它对程序员有用的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6112703/

30 4 0