0

我正在尝试使用不应被阻塞的线程在不同的偏移位置写入文件。我不太确定如何进行相同的操作。我猜我需要用 O_NONBLOCK 标志打开文件。

只是我需要用 O_NONBLOCK 标志打开文件并且写入过程是一样的吗?

任何示例代码都将有助于解释

谢谢

4

1 回答 1

1

在 UNIX/Linux上,与文件关联的文件描述符始终准备好进行读写。换句话说,O_NONBLOCK对常规文件没有影响。

通常,写入文件只是将数据复制到内核页面缓存并返回。除非文件是用O_DIRECT标志打开的,或者内核页面缓存有太多脏页,在这种情况下写入会阻塞。

如果您需要对文件进行非阻塞写入,请创建一个专门的线程来完成所有写入,或者使用异步 I/O

于 2012-07-04T08:26:23.540 回答