WWG2000
04-10-2001, 21:13
Hallo allerseits.
Ich hab ein kleines Problem, und zwar hab ich eine in einem Programm via pipe einen Datenkanal geöffnet. Schreiben kann ich dort ohne Probleme, das Lesen funktioniert ja auch, nur leider blockiert mein Programm wenn keine Daten mehr anliegen.
Ich weiß wohl, dass ich das mit dem O_NONBLOCK Flag regeln kann, aber ich hab es einfach nicht hinbekommen.
Ich benutze meine pipe wie folgt:
if (pipe(fd_for_out)!=0)
{
printf("can't create a pipe\n");
exit(-1);
}
....
if ((retval=fork())==0)
{
...
write(fd_for_out[1], buf_at_int, strlen(buf_at_int));
}
.....
while(1)
{
read(fd_for_out[0], buf_at_ext, 2);
}
Ich hab auch schon folgendes von der read-Funktion versucht:
fcntl(fd_for_out[1],F_SETFL,O_NONBLOCK);
Ich hoffe mir kann jemand helfen wie ich das hinbekommen könnte.
Ich hab ein kleines Problem, und zwar hab ich eine in einem Programm via pipe einen Datenkanal geöffnet. Schreiben kann ich dort ohne Probleme, das Lesen funktioniert ja auch, nur leider blockiert mein Programm wenn keine Daten mehr anliegen.
Ich weiß wohl, dass ich das mit dem O_NONBLOCK Flag regeln kann, aber ich hab es einfach nicht hinbekommen.
Ich benutze meine pipe wie folgt:
if (pipe(fd_for_out)!=0)
{
printf("can't create a pipe\n");
exit(-1);
}
....
if ((retval=fork())==0)
{
...
write(fd_for_out[1], buf_at_int, strlen(buf_at_int));
}
.....
while(1)
{
read(fd_for_out[0], buf_at_ext, 2);
}
Ich hab auch schon folgendes von der read-Funktion versucht:
fcntl(fd_for_out[1],F_SETFL,O_NONBLOCK);
Ich hoffe mir kann jemand helfen wie ich das hinbekommen könnte.