![]() |
![]() |
|
|
|||||||
| Linux, UNIX, Open Source Rat & Tat bei Problemen und Fragen rund um GNU/Linux, BSD und sonstige UNIXe |
|
|
Themen-Optionen | Ansicht |
|
|
#1 |
|
Newbie
![]() Registriert seit: 20.06.2008
Alter: 47
Beiträge: 5
|
Hallo!
Ich hätte mal ein paar Fragen zu einem C-Programm unter Linux. 1. Welche Rolle spielen dabei die Systemfunktionen fork, wait, execlp und exit? 2. Warum zeigt der Zähler 'count', der die ausgeführten Befehle zählen soll, nicht den richtigen Wert an? 3. Was machen die einzelnen Befehle („ls“, „ps“ und „ln“), die das Programm zur Ausführung bringt, und welche Bedeutung haben ihre Ausgaben auf der Konsole? 4. Unter welchen Bedingungen funktioniert der 3. Befehl („ln“) und was genau ist seine Wirkung? 5. Was genau geschieht bei dem Versuch, dem 4. Befehl auszuführen? Unter welchen Bedingungen würde dieser Befehl funktionieren? #include <sys/types.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #define BUFFERSIZE 100 int main() { char line[10]; int count = 0; while( 1 ) { printf( "Befehlscode eingeben: " ); fgets( line, BUFFERSIZE, stdin ); if( line[0] == '0' ) { break; } if( fork() == 0 ) { count++; if( line[0] == '1' ) { execlp( "ls", "ls", "-li", (char*)NULL ); } else if( line[0] == '2' ) { execlp( "ps", "ps", "-H", (char*)NULL ); } else if( line[0] == '3' ) { execlp( "ln", "ln", "x", "y", (char*)NULL ); } else if( line[0] == '4' ) { execlp( "nonexistent", "x", "y", (char*)NULL ); } perror( "FEHLER" ); exit( errno ); } int status; wait(&status); } printf( "Anzahl der ausgefuehrten Befehle: %d\n", count ); } |
|
|
|
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|