首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >O_NOBLOCK标志会使文件写入()失败吗?在什么情况下?

O_NOBLOCK标志会使文件写入()失败吗?在什么情况下?
EN

Stack Overflow用户
提问于 2013-04-17 20:53:03
回答 2查看 249关注 0票数 1

我将大约50k字节的数据写入一个文件(该文件存储在U盘中,并挂载在linux 2.6.37上。FAT32 ),它每200 ms.Whether使用一次O_NOBLOCK,write()函数有返回EAGAIN.If的风险是,为什么以及在什么情况下。我已经运行了半个小时的程序,并且没有错误返回报告。

EN

回答 2

Stack Overflow用户

发布于 2013-04-17 21:20:20

正确但已删除的答案副本:

不是的。O_NONBLOCK标志不影响对常规文件的处理。

票数 3
EN

Stack Overflow用户

发布于 2013-04-17 21:26:40

一些reference,为了完整性:

这只适用于管道;对于常规文件,它被忽略。

如果O_NONBLOCK标志被清除,写请求可能会导致线程阻塞,但在正常完成时,它将返回nbyte。

如果设置了O_NONBLOCK标志,则应通过以下方式以不同方式处理write()请求:

  • ()函数不会阻塞线程。write

  • 对{PIPE_BUF}或更少字节的写请求应具有以下效果:如果管道中有足够的可用空间,write()将传输所有数据并返回请求的字节数。否则,write()将不传输任何数据,并返回-1并将errno设置为EAGAIN。

  • 超过{PIPE_BUF}字节的写入请求将导致以下情况之一:
  • 当至少可以写入一个字节时,尽可能地传输并返回写入的字节数。读取之前写入管道的所有数据时,应至少传输{PIPE_BUF}字节。如果没有数据可以写入,则不传输数据,并返回-1 \f25
  • -1并将-1\f25 errno 1设置为-1\f25 EAGAIN.

-1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16060589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档