【问题标题】:What is the meaning of low-level I/O? How do I implement it in this program?低级 I/O 是什么意思?我如何在这个程序中实现它?
【发布时间】:2013-10-29 08:29:23
【问题描述】:

我需要编写一个接受三个命令行参数的 C 程序:

  1. 输入文件一
  2. 输入文件二
  3. 输出文件名

程序需要从文件1和2中读取数据并将第一个文件和第二个文件连接起来,得到第三个文件。

这看起来应该很容易,但分配的规定之一是只使用低级 I/O。

这到底是什么意思(低级 I/O)?

【问题讨论】:

  • 不错的问题。 OP 没有要求代码。
  • 我从来没有说过这是一个坏问题。
  • '低级 I/O' 对我来说意味着驱动程序,以及操作系统和硬件特定中断以及随之而来的 DMA。这是一个指定不充分的任务,如果没有进一步说明,我会拒绝处理。

标签: c io low-level-io


【解决方案1】:

要回答唯一的问题(什么是低级 I/O),它可能意味着操作系统本机输入/输出功能。

在 POSIX 中,这将是例如open()close()read()write()

在 Windows 上,例如CreateFile()CloseHandle()ReadFile()WriteFile()

【讨论】:

  • @Sukminder 在 Windows 例如_open等不是WIN32原生函数。相反,他们在后台使用本机 WIN32 功能。这完全取决于我猜你想去多低级。
  • “C 语言与 Unix 和类 Unix 系统密切相关”是否正确,所以所有设计用于执行低级别 I/O 操作的函数实际上都是相应的包装器操作系统服务。?在 Windows 上 vs 在 POSIX 中
  • @CătălinaSîrbu 虽然 C 诞生于 UNIX(POSIX 紧随其后),但 C 编程语言自 1980 年代标准化以来就完全独立于操作系统。 C 中最低级别的 I/O 函数可能是 freadfwrite,它们不是“OS 级”低级。
  • 谢谢!我忘了问如果有这些功能的高级实现,为什么我们需要使用低级 I/O?是为了更好的表现吗?我读过他们已经针对性能进行了调整,即使他们有缓冲区并且发生了行转换
  • @CătălinaSîrbu 性能可能是个问题,但这并不总是主要原因。有时只是不可能使用其他东西。例如,当使用管道、套接字、串行端口或其他未被 C 库抽象的类似事物时。
【解决方案2】:

低级别基本上代表操作系统级别。这可以通过使用系统调用来完成。 应用程序开发人员通常无法直接访问系统调用,但可以通过应用程序编程接口 (API) 访问它们。 API 中包含的函数调用实际的系统调用。通过使用 API,可以获得某些好处:

可移植性:只要系统支持 API,任何使用该 API 的程序都可以编译和运行。

易用性:使用 API 比使用实际系统调用要容易得多。

有关系统调用的更多信息,请查看hereherehere

查看您的程序here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2021-09-18
    • 2012-01-14
    相关资源
    最近更新 更多