我创建了一个 FIFO,我可以通过这种方式进行非阻塞写入:
// others, searching for a non-blocking FIFO-writer may copy this ;-)
mkfifo("/tmp/myfifo", S_IRWXU);
int fifo_fd = open("/tmp/myfifo", O_RDWR);
fcntl(fifo_fd, F_SETFL, fcntl(fifo_fd, F_GETFL) | O_NONBLOCK);
// and then in a loop:
LOGI("Writing into fifo.");
if (write(fifo_fd, data, count) < 0) {
LOGE("Failed to write into fifo: %s", strerror(errno));
}
非阻塞写入完美。
另一方面,我打开 FIFO 进行读取并执行相同的 fcntl() 以使 read() 非阻塞。
我现在想在写入端进行几次(cpu 密集型)计算,但前提是连接了一个阅读器。
因此,我需要在写入端找到一种方法,以检测 FIFO 是否已打开以供在其他地方读取。
有谁知道如何实现这一目标?