C: Ein- und Ausgabekanäle sollten nicht leichtfertig geschlossen werden

Verwendet ein Programm, da es z.B. im Hintergrund läuft keine Standardausgabe oder soll keine Fehler ausgeben, wird oftmals einfach der Dateideskriptor für die Standard- bzw. Standardfehlerausgabe geschlossen. Man kann jedoch z.B. bei größeren Projekten nie wissen welche anderen ggf. dynamisch angezogenen Bibliotheken später doch auf diese Dateideskriptoren (file handles) zugreifen. Und genau hier beginnen die möglichen […]

Read More

BASH: Abbrechen von im Hintergrund gestarteten Skripten vermeiden

Shell-Skripte sind beliebt, weil mit wenig Aufwand auch komplexe Aufgaben erledigt werden können. Begonnen mit den Init-Skripten bis hin zu Installationsskripten werden dabei oft Dinge erledigt, bei denen ein (unbemerktes) Fehlverhalten zu sehr schwer zu findenen Problemen führt. Eine häufige Ursache ist, dass zeitaufwändige Aufgaben zwar im Hintergrund gestartet werden, aber nicht sicher gestellt ist, […]

Read More

Weak Symbols im Linux-Kernel

Versucht man ein Kernel-Modul zu laden, dessen Symbole nicht durch den Kernel-Modul-Loader aufgelöst werden können, schlägt das Laden fehl. Sind diese Symbole jedoch für den Betrieb des Moduls nicht zwingend nötig und man könnte z.B. im Debug-Fall darauf verzichten, muss man im Allgemeinen das Modul ohne die Modul-Abhängigkeiten neu übersetzen. Um sich diesen Schritt zu […]

Read More

Shell: Ausgabe/Eingabeumleitung kompakt

Hier als kleiner Auffrischung/Referenz die gebräuchlichsten Ausgabe- und Eingabeumleitungen: < Datei Datei auf Standardeingabe umleiten << EOT ….. EOT z.B. in Shellskript, mehrzeilige Eingabe bis EOT (end of text) in Standardeingabe umleiten 1> Datei oder > Datei Standardausgabe in Datei umleiten, neue Datei dabei erstellen >> Datei Standardausgabe in Datei umleiten, an evtl. vorhandene Datei anhängen 2> Datei […]

Read More

C/C++: bessere Codequalität durch einfache Regeln

Viele der Flüchtigkeitsfehler bei der Programmierung fallen erst viel später auf – meist nach Release des Produktes. Diese sind dann schwer zu debuggen und wären ohne viel Komfort-Verlust bei der Programmierung aufgefallen, wenn man die im Folgenden vorgestellten Tipps befolgt hätte uns so ohne Mühe eine bessere Codequalität abgeliefert hätte. Ich habe diese nach der […]

Read More