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