popen() und nicht blockierendes auslesen

10/02/2009 - 12:11 von Yoshi Rokuko | Report spam
mit popen() starte ich "app" und und bekomme den stdout in meinen filedesc:

FILE *fd;
fd = popen(app, "r");

wenn ich dann aber mit

while(1) {
fgets(buffer, 127, fd);
}

den stdout von "app" in den buffer packe blockiert fgets() sobald "app" mal
kein output produziert.

hatte schon an select() gedacht, aber FD_SET() nimmt nicht FILE *fd, sondern
int fd, deswegen habe ich jetzt gerade keine idee - kann mir da jemand
weiterhelfen?

popen() fand ich eigentlich ganz galant weil ich fork() dann nicht machen
muss.

Danke und Gruss,

y0shi
 

Lesen sie die antworten

#1 Yoshi Rokuko
11/02/2009 - 09:10 | Warnen spam
Christoph Moench-Tegeder schrieb:
## Yoshi Rokuko :

ich will eigentlich nicht blockieren, ich haette gerne etwas, das
probiert
aus fd zu lesen und wenn "app" nix sagt abbricht



fcntl(fileno(fd), F_SETFL, O_NONBLOCK);

Gruss
Christoph



Ja, vielen Dank! sowas wollte ich haben ;-)

gruss y0shi

Ähnliche fragen