~によるとこの問題、システムプログラミングを学ぶ良い方法は、既存のツールを実装することです。私は書き換えることにしまし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版を入手してください。この本は参考書ですが、他の本が初心者に適している可能性があります。