您可以使用
open()管道
O_RDonLY |O_NONBLOCK,如果需要C流,可以使用
fdopen()。但是,-AFAIK可能存在问题
select(),它是为读取而打开的管道fd,它没有编写器,总是为读取做准备,并
read()返回0,因此
select()将无限期启动。
解决这个问题的一种肮脏的方式是打开管道
O_RDWR; 也就是说,至少要有一个编写器(您的C ++程序)。无论如何,这将解决您的问题。

您可以使用
open()管道
O_RDonLY |O_NONBLOCK,如果需要C流,可以使用
fdopen()。但是,-AFAIK可能存在问题
select(),它是为读取而打开的管道fd,它没有编写器,总是为读取做准备,并
read()返回0,因此
select()将无限期启动。
解决这个问题的一种肮脏的方式是打开管道
O_RDWR; 也就是说,至少要有一个编写器(您的C ++程序)。无论如何,这将解决您的问题。