5

#include <dos.h>ヘッダーを含むCプログラムがあります。コンパイル時エラーが表示されます。dos.hLinuxではヘッダーファイルが無効であることを知っています。

dos.hLinuxに同等のヘッダーは他にありますか?

4

2 に答える 2

10

LinuxはPosix/Unixライクなシステムなので、使用できるシステムコールと機能を学ぶ必要があります。高度なUNIXプログラミングの本(または同等のもの。AUPは非常に優れた本と見なされています)を読んでください。高度なLinuxプログラミングを読むこともできます(オンラインでも、コピーはここにあります)。dos.hしたがって、Linuxにはヘッダーがありません。

また、syscallsの紹介と、 syscalls(2)のマニュアルページにあるそれらのリストman 2 introを取得するために入力することもできます。アプリケーションの観点からは、syscallLinuxカーネルによって提供される基本的な操作です。

GNU libcは、システムコールの上に非常に多くの機能(たとえば、やなどの標準C関数、ユーザーデータベースへのクエリなどのシステム関数など)を提供します。ほとんどすべてのLinuxプログラムがそれを使用しています。mallocfprintffgetpwent

他の同様のシステム(MacOSXやFreeBSDなど)で(再コンパイル後に)移植可能に実行可能である必要があるもののコーディングに関心がある場合は、Posix標準に従うことを検討してください。

ターミナル画面アプリケーションをコーディングする場合は、ncursesの使用を検討してください。

グラフィカルインターフェイスが気になる場合は、QtGtkなどのグラフィカルツールキットを使用してください。これらは通常、 X11サーバーと対話します(QtとGtkの両方は、共通のグラフィカル抽象化レイヤーを提供することにより、Windowsなどの他のPosix以外のシステムで実行できます)。GtkとQtはどちらも、システムの機能と機能(特に、pthreadの標準スレッドライブラリ)の上に抽象化レイヤー(それぞれGlibとQCore)を追加しています。

ついに、Linuxは自由ソフトウェアです; そのため、使用している(ライブラリまたはユーティリティの)ソースコードの内部を調べると面白いかもしれません。あなたもそれを改善し、それに貢献することができます。

これらすべての面で、LinuxプログラミングはWindowsやDOSとは大きく異なります。

すべてのWindowsまたはDos関数をLinuxに模倣しようとしないでください(たとえば、すべてのdos.h関数に相当するものを要求しないでください)。Posix/Unixの考え方とコーディングを学びます。

time(7)のマニュアルページには、Linuxでの時間(さまざまな意味と機能)について多くのことが書かれています。

gcc -Wall -Wextra;でコンパイラに警告を出すことを忘れないでください。原則として、警告が表示されなくなるまでソースコードを改善してください。

dos.hLinux(つまり、UnixまたはPosix仕様)とWindowsは、機能と概念が異なるシステムであるため、Linuxに相当するものはありません。ただし、いくつかの無料ライブラリ(GlibとQCoreについて説明しました)は、LinuxとWindowsに適合する共通の抽象化を提供しているため、WindowsとLinuxに移植可能なソフトウェアを開発する場合は、代わりにこれらのライブラリを使用することをお勧めします(WindowsとLinux)。

dos.h(マイクロソフトは、独占的な評判と標準およびフリーソフトウェアへの嫌悪感を考えると、独自のプロプライエタリの無料クローンを回避するために、特許または著作権に基づく法的脅威を使用するだろうと思います。マイクロソフトに対して強い意見があることを認めます。)

于 2012-07-27T05:15:32.117 に答える
9

dos.hヘッダーファイルは、DOSオペレーティングシステムへのインターフェイスです。それらはDOS以外のオペレーティングシステムに移植できません(Linuxでは動作しないことを意味します)。dos.hのどの機能を使用しますか?

于 2012-07-27T04:51:51.503 に答える