~によるとこの問題、システムプログラミングを学ぶ良い方法は、既存のツールを実装することです。私は書き換えることにしましls
たps
。
私の質問は、そのような文書を入手するためにどうすればよいですか?
カーネル、ファイルシステムなどを照会するために必要なシステムコールAPIはどこにありますか?
私はGNUツールのソースコードを見ることができると思いました。どこで見つけることができますか?
どこから始めるべきかについての良い文書化に関する推奨事項(オンラインで無料で提供されることを願っています)はありますか?
答え1
あなたはそれを使用することができますglibc マニュアル参照。完全初心者のためのものではありませんが、Cに精通している場合は、一部を読んで機能するプログラムを書くことができます。
以下では、GNUツールのソースコードを見つけることができます。GNUウェブサイト;これを取得する最も簡単な方法は、Linuxディストリビューションからソースコードパッケージを入手することです(たとえば、ディストリビューションがapt-get source coreutils
Debianパッケージユーティリティを使用している場合など)。から始めることをお勧めします忙しい箱GNUツールではなく、BusyBoxは組み込みLinuxシステム用のユーティリティセットです。 GNUユーティリティより小さくて簡単です。
実行して、どのシステムコールが行われているかをstrace ls
確認できます。ls
プログラムを作成するときにシステムコールを直接呼び出すのではなく、システムコールを作成するCライブラリの関数を呼び出すことに注意してください。ファイル操作と同じ場合、Cライブラリ関数はシステムコールopen
と非常によく似ています。read
勉強には本(紙)が役に立つことが多いです。UNIX®環境の高度なプログラミング(アプエ)は古典です。入手すると初版が既に期限切れになっていますので、第2版を入手してください。この本は参考書ですが、他の本が初心者に適している可能性があります。
答え2
存在するオペレーティングシステム、コマンドは情報を読み取って実装されますps
。free
top
プロセスファイルシステム
The proc file system is a pseudo-file system which is used as an inter-
face to kernel data structures. It is commonly mounted at /proc. Most
of it is read-only, but some files allow kernel variables to be
changed.
まずman 5 proc
、これらのユーティリティはすべてオープンソースなので、確認してみることもできることを忘れないでください。パスワード。