5

我有一个包含#include <dos.h>标题的 C 程序。它显示编译时错误。我知道dos.h头文件在 Linux 中无效。

dos.hLinux 中还有其他等效的标头吗?

4

2 回答 2

10

Linux 是一个类似 Posix/Unix 的系统,因此您应该学习可以使用的系统调用和工具。阅读高级 unix 编程书(或同等的;AUP被认为是一本非常好的书)。您还可以阅读高级 linux 编程(甚至在线,这里有一份副本)。所以Linux没有dos.h标题。

你也可以在syscalls(2)手册页中输入系统调用man 2 intro介绍,以及它们的列表。从应用程序的角度来看,系统调用Linux 内核提供的基本操作

GNU libc在系统调用之上提供了很多功能(例如,标准C函数,如mallocand fprintf,以及系统函数,如fgetpwent查询用户数据库等)。几乎每个 Linux 程序都使用它。

如果您关心应该在其他类似系统(例如 MacOSX 或 FreeBSD)上可移植运行(重新编译后)的编码内容,请考虑遵循Posix标准。

如果要编写终端屏幕应用程序,请考虑使用ncurses

如果您关心图形界面,请使用QtGtk 之类的图形工具包;它们通常与X11服务器交互(通过提供通用的图形抽象层,Qt 和 Gtk 都能够在其他一些非 Posix 系统上运行,例如 Windows。)。Gtk 和 Qt 都在系统函数和设施之上(特别是在pthreads标准线程库之上)添加了一个抽象层(分别为 Glib 和 QCore)。

最后,Linux 是免费软件;因此,您可能会发现查看正在使用的(库或实用程序的)源代码很有趣。你甚至可以改进它并为它做出贡献。

在所有这些方面,Linux 编程都与 Windows 或 DOS 有很大不同。

不要试图在 Linux 中模仿每个 Windows 或 Dos 功能(例如,不要询问每个dos.h功能的等价物);学习 Posix/Unix 的思维和编码方式。

time(7)手册页告诉你很多关于 Linux 上时间的信息(关于它的各种含义和功能)。

不要忘记使用gcc -Wall -Wextra;向编译器询问警告。作为一般规则,请改进您的源代码,直到您没有收到任何警告。

dos.h因为 Linux(即 Unix 或 Posix 规范)和 Windows 是具有不同特性和概念的系统,所以不可能有一个完全等效的Linux。然而,一些免费库(我提到了 Glib 和 QCore)提供了通用的抽象来适应 Linux 和 Windows,所以如果你想开发可移植到 Windows 和 Linux 的软件,我建议改用这些库(在 Windows 和 Windows 上都使用它们) Linux)。

(我还怀疑微软会使用基于专利或版权的法律威胁来避免对其专有的免费克隆dos.h,因为他们的垄断声誉以及他们对标准和自由软件的厌恶;我承认我对微软有强烈的意见......)

于 2012-07-27T05:15:32.117 回答
9

dos.h 头文件是 DOS 操作系统的接口。它们不能移植到 DOS 以外的操作系统(意味着不能在 Linux 中运行)。您将使用 dos.h 中的哪个功能?

于 2012-07-27T04:51:51.503 回答