Zweites BS1 Praktikum

Hier nun die Lösungen zu den Aufgaben 2-4 aus dem zweiten BS1 Praktikum!
In Aufgabe 2 sollte man die Anzahl der Parameter in der Argumentenliste und die Argumentenliste, die bei dem Programmaufruf angegeben wird, mittels des Programms ausgeben. Die Ausgabe erfolgt, wie gefordert, dabei über die Pointerschreibweise. Werden keine Parameter angegeben, so wird eine Fehlermeldung ausgegeben und ein Fehlercode an die Shell zurück gegeben.

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[]) {
int    i = 0;
if (argc==1){
printf(“ERROR: Kein Parameter!n”);
return 1;
}
else {
printf(“Anzahl der Kommandozeilenparameter: %d n”, argc);
printf(“Die Eingabeparameter sind:n”);
while(*argv != 0) {
printf(“argv[%d] = %s n”, i++, *argv++);
}
}
return 0;
}

Die Aufgabenstellung Nummer drei lässt sich schnell und unkompliziert zusammenfassen. Gefordert war die Ausgabe der Umgebungsvariablen, das Setzen einer Umgebungsvariable und das Suchen nach Umgebungsvariablen, ob diese vorhanden sind!

#include<stdio.h>
#include<stdlib.h>

void main(int argc, char* argv[], char* envp[]) {
printf(“Liste der Umgebungsvariablen:n”);
while(*envp != 0) {
printf(“%s n”, *envp++);
}

setenv (“HUGO”, “Hugo”, 1);

char search[50];
printf(“Geben Sie die zusuchende Umgebungsvariable an:n”);
scanf(“%s”, &search);
if(getenv(search)){
printf(“%s = %sn”, search, getenv(search));
}
else{
printf(“Die gesuchte Umgebungsvariable existiert nicht!n”);
}
}

Das Programm für Ausgabe 4 ersetzt einen vorhandenen Prozess durch einen anderen mittels einem Befehl aus der exec-Familie. Der fork()-Aufruf durfte laut Aufgabenstellung nicht verwendet werden.

#include <stdio.h>
#include <unistd.h>

int main() {
printf(“Eigene Prozess-ID: %inn”, getpid());
execlp(“ps”, “ps-Test”, 0);
printf(“Ein Problem ist während dem Ersetzen des Prozesses aufgetreten!”);
return -1;
}

Facebooktwittergoogle_pluslinkedinmail

Leave a Reply