Гарантируется ли, что если read вернет число прочитанных байтов меньше, чем я запросил, то следующий вызов read вернет 0?
Нет, не на практике.Это должно быть верно, если файловая система полностью совместима с POSIX, но многие из них - нет (в угловых случаях).В частности, NFS (см. nfs (5) ) и FUSE или proc (см. proc (5) ) не полностью соответствуют POSIX.
Поэтому на практике я настоятельно рекомендую обрабатывать «read
возвращает меньшее количество байтов, чем требуется регистр», даже если вы правы, полагая, что этого не должно произойти.Обработка этого «невозможного» случая должна быть легкой для вас.
Обратите также внимание, что inotify (7) средства не работают с такими странными файловыми системами, как NFS, proc, FUSE, ... Подумайтетакже в угловых случаях, таких как внутри файловой системы Ext4 символическая ссылка на файл NFS;или привязать крепления и т.д ...