答えに加えて、C プログラミング言語の本 (K&RC) で、ls の実装方法に関する小さな例を示しています。彼らは、データ構造と機能を非常によく説明しています。
ls の機能を理解するには、OpenSolaris のソース (https://hg.java.net/hg/solaris~on-src/file/tip/usr/src/cmd/ls/ls.c) をざっと見てみるとよいでしょう。
それが難しい場合は、Solaris では、まず truss を使用して、ls が行うシステム コールを調べて、その動作を理解します。トラスを使用して、試してください:
トラス -afl -o ls.out /bin/ls
次に、ls.out の出力を見てください
trace は Linux の truss に相当すると思います。
ls はフォークしません。シェルは、組み込まれていないコマンドを実行するためにフォークして実行します。実行できるコマンドの 1 つは ls です。
ls は、opendir() および readdir() を使用して、ディレクトリ内のすべてのファイルをステップ実行します。それらの 1 つに関する詳細情報が必要な場合は、stat() を呼び出します。