Краткая запись в файловый дескриптор UNIX - PullRequest
0 голосов
/ 17 июня 2010

Когда может произойти короткая запись в дескриптор файла во FreeBSD 7.2?

Я имею в виду ситуацию, когда системный вызов «write» возвращает меньше записанных байтов, чем запрошено.

Я говорю о дескрипторах обычных файлов в файловой системе ufs, которые мы можем получить при вызове open().

1 Ответ

2 голосов
/ 18 июня 2010

write () может вернуть меньше записанных байтов, чем запрошено:

Произошло переключение контекста процесса или получен SIGINT, write () не является атомарным. write () возвращает меньше байтов, когда происходит EOF до считывания всего буфера.

Если для fd установлено неблокирование, то другие переходные условия могут привести к тому, что write () вернет, записав меньше байтов, чем запрошено - это поведение, определяемое реализацией. Пример - временные ошибки переполнения диска в файловых системах, таких как / tmp. Файловые системы NFS иногда не очень хорошо воспроизводятся: возврат ошибки из close () может быть единственным способом обнаружения ошибки переполнения диска при записи () в смонтированный файл NFS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...