使用popen的非阻塞管道?

我想使用打开管道,popen()并对其具有非阻塞的“读取”访问权限。

我该如何实现?

(我发现的示例都是阻塞/同步的)

回答:

设置如下:

FILE *f = popen("./output", "r");

int d = fileno(f);

fcntl(d, F_SETFL, O_NONBLOCK);

现在您可以阅读:

ssize_t r = read(d, buf, count);

if (r == -1 && errno == EAGAIN)

no data yet

else if (r > 0)

received data

else

pipe closed

完成后,清理:

pclose(f);

以上是 使用popen的非阻塞管道? 的全部内容, 来源链接: utcz.com/qa/427207.html

回到顶部