24.02.2013 Aufrufe

Einf ¨uhrung in UNIX - CIS

Einf ¨uhrung in UNIX - CIS

Einf ¨uhrung in UNIX - CIS

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

2.11 Systemaufrufe 211<br />

/usr/<strong>in</strong>clude/sys/stat.h deklariert, das se<strong>in</strong>erseits Bezug nimmt auf<br />

Deklarationen <strong>in</strong> /usr/<strong>in</strong>clude/types.h. Auch e<strong>in</strong>ige Informationen wie<br />

S_IFREG s<strong>in</strong>d <strong>in</strong> sys/stat.h def<strong>in</strong>iert. Die Zeitangaben werden wie im vorigen<br />

Abschnitt umgerechnet.<br />

In <strong>UNIX</strong>-Filesystemen enthält jedes File am Anfang e<strong>in</strong>e Magic Number,<br />

die über die Art des Files Auskunft gibt (man magic). Mittels des Systemaufrufs<br />

open(2) wird das fragliche File zum Lesen geöffnet, mittels lseek(2)<br />

der Lesezeiger auf die Magic Number gesetzt und mittels read(2) die Zahl<br />

gelesen. Der Systemaufruf close(2) schließt das File wieder. Die Systemaufrufe<br />

f<strong>in</strong>det man unter ihren Namen <strong>in</strong> Sektion (2), e<strong>in</strong>e Erläuterung der<br />

Magic Numbers unter magic(4). Nun das Programm:<br />

/* Informationen ueber e<strong>in</strong>e Datei */<br />

#def<strong>in</strong>e MEZ 3600<br />

#<strong>in</strong>clude <br />

#<strong>in</strong>clude <br />

#<strong>in</strong>clude <br />

#<strong>in</strong>clude <br />

#<strong>in</strong>clude <br />

#<strong>in</strong>clude <br />

void exit(); long lseek();<br />

<strong>in</strong>t ma<strong>in</strong>(argc, argv, envp)<br />

{<br />

<strong>in</strong>t argc; char *argv[], *envp[];<br />

<strong>in</strong>t i, fildes;<br />

struct stat buffer;<br />

long asec, msec, csec;<br />

struct tm *pa, *pm, *pc;<br />

if (argc < 2) {<br />

puts("Date<strong>in</strong>ame fehlt"); return (-1);<br />

}<br />

/* Informationen aus dem Environment */<br />

for (i = 0; envp[i] != NULL; i++)<br />

if (!(strncmp(envp[i], "LOGNAME", 4)))<br />

pr<strong>in</strong>tf("\n%s\n", envp[i]);<br />

/* Informationen mittels Systemaufruf access(2) */<br />

pr<strong>in</strong>tf("\nFile heisst: %8s\n", argv[1]);<br />

if (!access(argv[1], 0))<br />

puts("File existiert");

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!