Systemaufrufe in C [Systemaufrufe in C] (Systemaufrufe in C), Lektion, Seite 722306
https://www.purl.org/stefan_ram/pub/systemaufrufe_in_c (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Systemaufrufe in C 

Eine (statische) Bibliothek  ist eine Sammlung von Objektdateien, also beispielsweise kompilierten C -Programme. Ihre Einträge werden beim Binden eines Programms ganz oder teilweise zu dem Programm hinzugefügt; sie werden damit also ein Teil des erzeugten ausführbaren Programms. Nach entsprechender Einstellung des Binders und dem Einfügen passender Include -Direktiven, können Funktionen aus Bibliotheken  aufgerufen werden.

Betriebssysteme  stellen oft Bibliotheken zum Zugriff auf ihre Funktionen („Systemaufrufe“) bereit.

Programme, die von diesen Betriebssystemfunktionen Gebrauch machen, sind dann aber keine  portablen Standard-C -Programme mehr. (Jedoch gibt es auch auf diesem Gebiet teilweise Versuche einer Standardisierung, so hatte Windows NT  beispielsweise einige POSIX -Aufrufe unterstützt, wie sie auch von Linux  unterstützt werden.)

Durchlaufen eines Verzeichnisses
#include <stdio.h>       /* perror                               */
#include <stdlib.h> /* EXIT_FAILURE, EXIT_SUCCESS */ #include <sys/types.h> /* (allgemein) */ #include <dirent.h> /* DIR, struct dirent, opendir, readdir */
#include <sys/stat.h> /* struct stat, stat, S_ISDIR, S_ISREG */
#include <unistd.h> /* chdir */ void entry( struct dirent * const direntp )
{ struct stat buf;
if( stat( direntp->d_name, &buf )== -1 )perror( "stat\n" );
else if( S_ISDIR( buf.st_mode ))printf( "/ %s\n", direntp->d_name );
else if( S_ISREG( buf.st_mode ))printf( " %s\n", direntp->d_name); } int dir( DIR * const dirp )
{ struct dirent * direntp;
while( direntp = readdir( dirp ))entry( direntp );
return EXIT_SUCCESS; } int open( char const * const path )
{ int result; DIR * const dirp = opendir( path ); if( dirp )
{ chdir( path );
result = dir( dirp );
closedir( dirp ); }
else perror( "opendir\n" );
return result; } int main( void )
{ return open( "/" ); }

perror Druckt den Argumenttext und anschließend einen von »errno« abhängenden Text. Einige Funktionen schreiben einen Statuscode in die ganzzahlige Variable »errno« (eine Variable mit externer Bindung und Dateigültigkeitsbereich), falls bei ihrer Ausführung ein Laufzeitfehler aufgetreten ist. Durch einen Aufruf von »perror« kann dem Benutzer dann die Bedeutung dieses Fehlercodes angezeigt werden.

/    Präsenzaufgabe Dateigröße
Schreiben Sie das obenstehende Programm so um, daß es auch die Größen der Dateien ausgibt.
/    Übungsaufgabe Unterverzeichnisse
Schreiben Sie das obenstehende Programm so um, daß es auch die Inhalte der Unterverzeichnisse bis zu einer beliebigen Verschachtelungstiefe von Unterverzeichnissen ausgibt.
(Das obige Programm kann auch als Ausgangspunkt für eine persönliche Variante des Kommandos »ls« dienen.)
Zusatzaufgabe Summieren Sie dabei die Dateigrößen um die Summer der Dateigrößen eines Verzeichnisses anzuzeigen.
Suchen nach bestimmten Dateien unter Linux
whereis dirent.h
Abschnitte des Linux -Handbuchs
1 user commands
2 system calls
3 library functions
4 special files
5 file formats
6 games
7 conventions and miscellany
8 administration and privileged commands
L math library functions
N tcl functions
http://linux.ctyme.com/
Handbuchseite für den Systemaufruf »stat«
man 2 stat

man 2 -k dirent
Literatur für Systemaufrufe
POSIX: http://www.unix.org/apis.html
Advanced Programming in the UNIX Environment, Addison-Wesley, 1992, W. Richard Stevens, ISBN 0-201-56317-7
Linux-Unix-Kurzreferenz von Helmut Herold im Addison-Wesley-Verlag

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. L'autore di questo testo è Stefan Ram. Tutti i diritti riservati. Questo sito è pubblicato da Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722306 stefan_ram:722306 Systemaufrufe in C Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722306, slrprddef722306, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/systemaufrufe_in_c