Hallo,
ich programmiere gerede ein etwas größeres C-Programm.
Nun habe ich den Code für dieses Forum minimiert, um das Problem schnell klar zu machen.
Ziel ist es, dass ein Kindprozess einem anderen Kindprozess eine einfache Ausgabe seines Standart-Outputs über eine Pipe zum anderen Kindprozess schickt und dieser dann das Geschickte als seinen Standart-Input nimmt.
Es geht auch fast alles. Nur wartet z.B. der Befehl "sort" scheinbar auf den Stream. Aber der ist dort!
Zum Beweis, habe ich dann ein kleines Stück des Stream ausgeben lassen (was man unten sieht).
Mein Programm:
Die Ausgabe dazu:
Da auf dem Stream noch mehr liegt, müsste "sort" etwas bekommen, aber der wartet!
Bitte schaue sich einer mal mein Problem an.
ich programmiere gerede ein etwas größeres C-Programm.
Nun habe ich den Code für dieses Forum minimiert, um das Problem schnell klar zu machen.
Ziel ist es, dass ein Kindprozess einem anderen Kindprozess eine einfache Ausgabe seines Standart-Outputs über eine Pipe zum anderen Kindprozess schickt und dieser dann das Geschickte als seinen Standart-Input nimmt.
Es geht auch fast alles. Nur wartet z.B. der Befehl "sort" scheinbar auf den Stream. Aber der ist dort!
Zum Beweis, habe ich dann ein kleines Stück des Stream ausgeben lassen (was man unten sieht).
Mein Programm:
Code:
#include <stdio.h> /* I/O */
#include <stdlib.h> /* standard c functions */
#include <string.h> /* string manipulations */
#include <unistd.h> /* for the Stream-Management */
#include <sys/types.h>
void main(void){
FILE *umleit;
int myeins[2];
char string[256];
pid_t prozessid=1;
pipe(myeins);
prozessid=fork();
if(prozessid==0){
dup2(myeins[1],STDOUT_FILENO);
system("ls");
exit(0);
}
prozessid=fork();
if(prozessid==0){
dup2(myeins[0],STDIN_FILENO);
umleit=fdopen(myeins[0],"r");
printf("\n");
fscanf(umleit,"%s",&string);
printf("Empfangen: %s\n",string);
fscanf(umleit,"%s",&string);
printf("Empfangen: %s\n",string);
printf("\n\n");
system("sort");
exit(0);
}
}
Die Ausgabe dazu:
Code:
Empfangen: alt
Empfangen: datei.txt
Da auf dem Stream noch mehr liegt, müsste "sort" etwas bekommen, aber der wartet!
Bitte schaue sich einer mal mein Problem an.