musiKk
Dr. Strangelove
Hallo, mein Sorgenkind, die Standardeingabe, aergert mich mal wieder aufs schlimmste.
Grob gesagt moechte ich erstmal einen Kind-Prozess erstellen und in diesem eine Eingabe taetigen koennen. Natuerlich ist das bei weitem nicht alles, aber da ich nicht einmal das hinbekomme, wollte ich das erstmal klaeren.
Mein Hauptprogramm sieht so aus: (main.c)
Mein Kind so: (child2.c)
Noch sehr sinnlos das Kind, ich weiss...
Folgendes Problem: Wenn ich das Kind alleine in der Konsole starte, laesst es mich eine Eingabe machen und gibt diese auch korrekt aus. Starte ich allerdings das Hauptprogramm, wird die Eingabe uebersprungen. Immer. Egal, ob es cin, getchar, scanf, fgets, ... ist. Auch ein fflush(stdin) vorher brachte nichts.
Woran koennte das liegen? :/
Vielen Dank schonmal fuer Antworten.
edit: Wers braucht btw noch: SunOS 5.8 mit gcc 3.4.2.
Grob gesagt moechte ich erstmal einen Kind-Prozess erstellen und in diesem eine Eingabe taetigen koennen. Natuerlich ist das bei weitem nicht alles, aber da ich nicht einmal das hinbekomme, wollte ich das erstmal klaeren.
Mein Hauptprogramm sieht so aus: (main.c)
Code:
#include <stdio.h>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char* argv[]) {
char filename[50];
printf("filename: ");
fgets(filename, 50, stdin);
filename[strlen(filename)-1] = '\0'; //remove trailing \n
printf("filename: %s\nlength: %d\n", filename, strlen(filename));
char* child2_argv[3];
child2_argv[0] = "child2\0";
child2_argv[1] = filename;
child2_argv[2] = NULL;
pid_t child1, child2;
// TODO: child1
child2 = fork();
switch (child2) {
case -1:
perror("fork");
exit(1);
break;
case 0:
execv("child2", child2_argv);
perror("execv");
exit(1);
break;
}
}
Mein Kind so: (child2.c)
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Fflush() while(getchar() != '\n')
int main(int argc, char* argv[]) {
printf("Enter chars:\n");
char c = fgetc(stdin);
printf("%c\n", c);
printf("Finished\n");
fclose(fp);
}
Folgendes Problem: Wenn ich das Kind alleine in der Konsole starte, laesst es mich eine Eingabe machen und gibt diese auch korrekt aus. Starte ich allerdings das Hauptprogramm, wird die Eingabe uebersprungen. Immer. Egal, ob es cin, getchar, scanf, fgets, ... ist. Auch ein fflush(stdin) vorher brachte nichts.
Woran koennte das liegen? :/
Vielen Dank schonmal fuer Antworten.
edit: Wers braucht btw noch: SunOS 5.8 mit gcc 3.4.2.