网络编程

  1. O_RDONLY | O_NONBLOCK (只读非阻塞)

    • 在许多系统(包括Linux)上,即使没有写端,open() 也成功

    • 内核认为:“你想读,我给了你读的权限。至于现在没数据可读,那是你后面 read()select() 要处理的事。”

    • 这就是为什么你可能观察到它“没失败”。

  2. O_WRONLY | O_NONBLOCK (只写非阻塞)

    • 几乎总是立即失败(返回-1,errno=ENXIO,如果没有读端。

    • 内核认为:“你想写,但没人读,数据会丢失,这不合逻辑,所以我拒绝。”

posted @ 2025-12-08 21:26  老胡同学  阅读(2)  评论(0)    收藏  举报