2015-06-09 2 views
0

Почему программа, подобная Apache, не может открыть простой файл? Запуск под strace шоу:Почему open() терпит неудачу каждый раз с помощью EAGAIN?

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

11 означает либо EAGAIN или EWOULDBLOCK

Где:

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

su Если я, как www-data я могу записать в файл безопасно.

ответ

1

11 - это дескриптор файла, а не код ошибки. Это означает, что вызовы open, которые вы видите, успешно преуспели. Если open не удастся, он вернется -1, а strace будет показывать примерно следующее:

open("access.log", O_RDONLY)   = -1 ENOENT (No such file or directory) 
Смежные вопросы