Einlesen von Tastatureingabe im Kindprozess
-
Hi!
Ich habe mal eine kurze und wahrscheinlich nicht sehr clevere Frage, aber was beachte ich hier nicht? Ich möchte einfach nur einen String im Kindprozess einlesen, aber ich bekomme gar nicht die Möglichkeit dazu?! Der Kindprozess wird so abgearbeitet, als ob der Part mit dem Einlesen gar nicht existiert?
Frage: Wie kann ich im Kindprozess mittels fgets() eine Eingabe von der Tastatur einlesen?
Das Schlimme ist, ich weiß wie ich es mittels MessageQueue weiterleite, aber nicht wie ich es einlese. ^^ Also, wo liegt mein Denkfehler?
(Die Rechnung und die Ausgaben im Code können missachtet werden
Mir geht's wirklich nur um das Einlesen. THX schon mal vorab!)
#include <stdio.h> #include <sys/types.h> #include <unistd.h> int main() { int test = 5; pid_t kind; //Fuers Einlesen der Nachricht int line_max = 10; char line[10]; printf ("\n\tProgramm startet\n"); kind = fork(); if (kind < 0) { printf ("\n\tfork() konnte nicht ausgefuehrt werden!\n"); exit(1); } else if (kind == 0) { printf ("\n\tKindprozess - GID = %d", getgid()); printf ("\tPID = %d PPID = %d\n", getpid(), getppid()); test = test + 1; printf ("\n\t test + 1 = %d \n", test); //Nachricht einlesen if (fgets(line, line_max, stdin) == NULL) printf("Es ist ein Fehler beim Einlesen aufgetreten\n"); else printf("Ihre Eingabe: %s\n", line); //exit(0); //printf("\t\nFehler aufgetreten\n"); } else { printf ("\n\tElternprozess - GID %d", getgid()); printf ("\tPID = %d PPID = %d\n", getpid(), getppid()); printf ("\n\t test = %d \n", test); } return 0; }
-
wait (kind) im elternprozess
sonst wird der beendet und reißt stdin mit
-
Ach natürlich. ^^ Der Elternprozess wartet hier ja nicht. Oh man. ^^ Ok, danke.....was für ein blöder Fehler. Und ich wunder mich schon warum das kleine Prog hier nicht ging. ^^