Systemprogrammierung: Wie sammle ich Informationen?

7

Nach dieser Frage wäre ein guter Weg, um die Systemprogrammierung zu lernen, die Implementierung der vorhandenen Werkzeuge. Ich beschloss, zu versuchen, umzuschreiben lsund ps.

Meine Frage ist, wie würde man vorgehen, um Dokumentation für solche zu bekommen?

  • Wo finde ich die API für Systemaufrufe, die zum Abfragen des Kernels, des Dateisystems usw. erforderlich sind?

  • Ich dachte, ich könnte mir vielleicht den Quellcode der GNU-Tools ansehen. Wo kann ich es finden?

  • Gibt es eine (hoffentlich online frei verfügbare) gute Dokumentation, die ihr empfehlen würdet, wo ihr anfangen sollt?

Rahmu
quelle

Antworten:

9

Sie können das Glibc-Handbuch als Referenz verwenden. Es ist nichts für absolute Anfänger, aber wenn Sie C einigermaßen fließend sprechen, sollten Sie in der Lage sein, einen Abschnitt zu lesen und ein Arbeitsprogramm zu schreiben.

Die Quelle der GNU-Tools finden Sie auf der GNU-Website . Der einfachste Weg, dies zu erreichen, besteht darin, die Quellpakete auf Ihrer Linux-Distribution abzurufen (z. B. apt-get source coreutilswenn Ihre Distribution Debian-Paketdienstprogramme verwendet). Ich empfehle, mit BusyBox anstatt mit den GNU-Tools zu beginnen. BusyBox ist eine Reihe von Dienstprogrammen für eingebettete Linux-Systeme. Es ist kleiner und einfacher als die GNU-Dienstprogramme.

Sie können ausführen, um strace lszu sehen, welche Systemaufrufe ausgeführt werden ls. Beachten Sie, dass Sie beim Schreiben eines Programms Systemaufrufe nicht direkt aufrufen, sondern Funktionen in der C-Bibliothek aufrufen, die Systemaufrufe ausführen. Für Dinge wie Dateimanipulationen funktioniert die C-Bibliothek wie openund kommt readden Systemaufrufen ziemlich nahe.

Zum Lernen ist normalerweise ein Buch (auf Papier) hilfreich. Advanced Programming in der UNIX®-Umgebung ( APUE ) ist ein Klassiker. Wenn Sie es bekommen, stellen Sie sicher, dass Sie die zweite Ausgabe erhalten, da die erste ziemlich veraltet ist. Dieses Buch ist die Referenz, aber andere Bücher sind möglicherweise besser für Anfänger geeignet. Einkaufsbummel.

Gilles 'SO - hör auf böse zu sein'
quelle
1

Auf Linux - Befehle wie ps, freeund topliest Informationen aus implementiert proc - Dateisystem.

   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.

Beginnen Sie mit man 5 procund vergessen Sie nicht, dass alle diese Dienstprogramme Open Source sind, sodass Sie auch einen Blick auf den Code werfen können .

andcoz
quelle