Hallo,
ich habe folgendes Problem....
Ich versuche beliebige viele Zahlenpaar über die Tastatur einzugeben (Vaterprozess)...
und diese sollen vom Tochterprozess (pid==0) ausgeben werden...
Code:
pid=fork();
if (pid == 0)
{close(fd[1]);
if ((fd_r = fdopen(fd[0],"r"))==NULL)
{
printf("fdopen: %s", strerror(errno));
exit(2);
}
while(fscanf(fd_r,"%d%d",&x,&y) != EOF)
{
printf("(Test) x: %d, y: %d\n",x,y);
}
return 2;
}
gibt mir nur das letzte Zahlenpaar aus... dieses allerdings sooft bis ich abbreche.... (die Ausgaben beendet sich nicht selber)
wenn ich allerdings mit "if" die Ausgabe etwas beschränke
Code:
while(fscanf(fd_r,"%d%d",&x,&y) != EOF)
{
c++;
printf("%d, (Test) x: %d, y: %d\n",c,x,y);
if (c>20) exit(3);
}
gibt er den Anfang richtig aus.... und dann
1, (Test) x: 2, y: 4
2, (Test) x: 1, y: 3
3, (Test) x: 4, y: 5
4, (Test) x: 7, y: 8
5, (Test) x: 7, y: 8
6, (Test) x: 7, y: 8
7, (Test) x: 7, y: 8
8, (Test) x: 7, y: 8
9, (Test) x: 7, y: 8
10, (Test) x: 7, y: 8
11, (Test) x: 7, y: 8
12, (Test) x: 7, y: 8
13, (Test) x: 7, y: 8
14, (Test) x: 7, y: 8
15, (Test) x: 7, y: 8
16, (Test) x: 7, y: 8
17, (Test) x: 7, y: 8
18, (Test) x: 7, y: 8
19, (Test) x: 7, y: 8
20, (Test) x: 7, y: 8
21, (Test) x: 7, y: 8
aber wie gelingt es mir, dass er jedes Zahlenpaar nur einmal ausgibt, bzw. am Schluss diese Endlosschleife nicht erscheint...?
Ruga
Lesezeichen