open FIFO for write returns “No such device or address”
分析代码:
int flags = 0;
flags |= O_WRONLY;
falgs |= O_NONBLOCK;
int fd = open(path, flags);
if (fd < 0)
{
std::cout << "error: " << errno << "\t" << strerror(errno)<<std::endl;
}
打印信息:
error: 6 No such device or address
打开一个fifo文件的时候,如果open设置为非阻塞只写的情况下,读端如果还没有打开的情况下,写端就会返回失败。所以在open一个fifo文件的时候,最好是设置为阻塞状态。这样open就可以等到读取的进程打开后,写端的进程就会正常打开,并返回正确的描述符。