rugaaaaa
07-12-2006, 22:43
Hallo,
ich habe folgendes Problem....
Ich versuche beliebige viele Zahlenpaar über die Tastatur einzugeben (Vaterprozess)...
und diese sollen vom Tochterprozess (pid==0) ausgeben werden...
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
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
ich habe folgendes Problem....
Ich versuche beliebige viele Zahlenpaar über die Tastatur einzugeben (Vaterprozess)...
und diese sollen vom Tochterprozess (pid==0) ausgeben werden...
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
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