Untuk menambah jawabannya, dalam buku Bahasa Pemrograman C (K&RC) mereka telah memberikan contoh kecil tentang bagaimana cara mengimplementasikan ls. Mereka telah menjelaskan struktur data dan fungsi yang digunakan dengan sangat baik.
Untuk memahami apa yang ls lakukan, Anda dapat melihat sumber OpenSolaris:https://hg.java.net/hg/solaris~on-src/file/tip/usr/src/cmd/ls/ls.c.
Jika itu berlebihan, pada Solaris Anda mulai dengan menggunakan truss untuk melihat panggilan sistem yang dibuat untuk memahami apa fungsinya. Menggunakan truss, coba:
truss -afl -o ls.out /bin/ls
lalu lihat hasilnya di ls.out
Saya percaya bahwa trace setara dengan truss di Linux.
ls tidak bercabang. Shell bercabang dan mengeksekusi untuk menjalankan perintah apa pun yang tidak ada di dalamnya, dan salah satu perintah yang dapat dijalankannya adalah ls.
ls menggunakan opendir() dan readdir() untuk menelusuri semua file dalam direktori. Jika membutuhkan lebih banyak informasi tentang salah satunya, ia memanggil stat().