我有一个包含#include <dos.h>
头文件的C程序。 它显示编译时错误。 我知道dos.h
头文件在Linux中是无效的。
Linux中是否有任何其他等效的dos.h
头文件?
dos.h头文件是DOS操作系统的接口。 它们不能移植到DOS以外的操作系统(意味着在Linux中不起作用)。 你将使用dos.h中的哪些功能?
Linux是一个Posix / Unix系统,所以你应该学习你可以使用的系统调用和设施。 阅读先进的Unix编程书(或一些相当的; AUP被认为是一本很好的书)。 你也可以阅读高级的linux编程 (甚至在线,副本就在这里 )。 所以Linux没有dos.h
头文件。
您也可以键入man 2 intro
来获取系统调用的介绍 ,并在syscalls(2)手册页中列出它们的列表。 从应用程序的角度来看, 系统调用是Linux内核提供的基本操作 。
GNU libc在系统调用之上提供了大量的功能(比如像malloc
和fprintf
这样的标准C函数,以及用于查询用户数据库的fgetpwent
等系统函数)。 几乎每个Linux程序都使用它。
如果你关心的是在其他类似的系统(例如MacOSX或FreeBSD)上编码应该可移植(在重新编译之后)的东西,可以考虑遵循Posix标准。
如果您想编写终端屏幕应用程序,请考虑使用ncurses 。
如果您关心图形界面,请使用Qt或Gtk等图形工具包 ; 他们通常与X11服务器进行交互(Qt和Gtk都可以通过提供一个通用的图形抽象层在其他非Posix系统上运行,例如Windows)。 Gtk和Qt都在系统函数和设施之上(特别是在pthreads标准线程库之上)添加一个抽象层(分别为Glib和QCore)。
最后,Linux是免费软件 , 所以你可能会觉得很有趣,看看你正在使用的源代码(库或实用程序)。 你甚至可以改进它并为之作出贡献。
在所有这些方面,Linux编程与Windows或DOS非常不同。
不要试图模仿Linux的每一个Windows或DOS功能(例如,不要问每个dos.h
函数的等价物); 学习Posix / Unix的思维和编码方式。
时间(7)手册页告诉你很多关于Linux的时间(各种含义和功能)。
不要忘记用gcc -Wall -Wextra
从编译器中提出警告; 作为一般规则,改进你的源代码,直到你没有任何警告。
由于Linux(即Unix或Posix规范)和Windows是具有不同特性和概念的系统,因此不能有与dos.h
完全相同的Linux。 然而,几个免费的库(我提到Glib和QCore)提供了适合Linux和Windows的通用抽象,所以如果你想开发可移植到Windows和Linux的软件,我建议使用这些库(在Windows和Windows上使用它们) Linux的)。
(我也怀疑微软会使用专利或版权的法律威胁来避免免费复制他们专有的dos.h
,因为他们的垄断声誉和他们对标准和自由软件的厌恶;我承认我对微软有强烈的意见..)