为什么每次使用EAGAIN时open()都会失败?

时间:2015-06-09 08:56:05

标签: linux apache2 strace

为什么像Apache这样的程序无法打开普通文件?在strace下运行它会显示:

open("access.log", O_WRONLY|O_CREAT|O_APPEND|O_CLOEXEC, 0666) = 11

11代表EAGAINEWOULDBLOCK

其中:

$ ls -l access.log
-rw-rw-rw- 1 root root 2 Jun  9 17:52 access.log

如果我suwww-data我可以安全地写入文件。

1 个答案:

答案 0 :(得分:2)

11是文件描述符而不是错误代码。这意味着您看到的open次呼叫成功并未失败。如果open失败,它将返回-1,而strace将显示如下内容:

open("access.log", O_RDONLY)            = -1 ENOENT (No such file or directory)