Techtab

[Programmieren] [Computer & Technik] [Webfunde] [Interessantes aus dem RL]

Artikel getaggt mit ‘Linux

Systemcalls mit C unter Linux

ohne Kommentare

So… das Thema dieses Eintrags sind also „Systemcalls mit C unter Linux“… doch was sind jetzt eigentlich „Systemcalls“ oder auch kurz „Syscalls“?

Ich will mich hier kurz fassen: Syscalls bieten eine Möglichkeit, aus einem Benutzerprogramm (oder eben aus einem C-Programm heraus) Funktionen des Kernels zu benutzen; normalerweise hat man ja auf diese wichtigen, geschützten Funktionen (berechtigterweise) keinen Zugriff.

Kommen wir jetzt allerdings zum Thema Linux: was gibt es jetzt dort also für Syscalls? Die Antwort steht in der Datei /usr/src/linux-2.6.22.5-31/include/asm-i386/unistd.h. Dort sind alle Syscalls aufgeführt ;) (Ordnernamen können abweichen)

Doch ohne Besipiele wäre dieser Eintrag doch recht öde, von daher hier mal ein kleines Beispielprogramm:

#include <unistd.h>
int main( void )
{
write( 0, "Hallo, Welt!\n", 13 );
return 0;
}

Der hier benutzte Syscall ist write; dieser Syscall trägt die Nummer 4 (ja, jeder Syscall hat auch eine Nummer, diese steht ebenfalls in unistd.h). Was macht dieser Syscall nun? Schlichte Antwort: er gibt die Zeichenkette, die als zweiter Parameter übergeben wird, einfach aus. Wo diese Zeichenkette jetzt ausgegeben werden soll, legt der erste Parameter fest; 0 steht einfach für die Standardausgabe – den Bildschirm. Die 13 gibt einfach die Anzahl der zu schreibenden Zeichen an ;) (Würden wir zum Beispiel anstatt 13 die Zahl 11 angeben, wäre die Ausgabe: Hallo, Welt)

Zugegeben: dieses Programm war nicht gerade spektakulär, aber es gibt ja auch noch andere Syscalls – einfach mal ausprobieren!

Geschrieben von theeem

Mai 14, 2008 um 1:29

Veröffentlicht in Linux

Getaggt mit , , ,