Очевидно, что в общем случае системный вызов read(2) может вернуть меньше байтов, чем было запрошено для чтения. Однако довольно много программ предполагают, что при работе с локальными файлами read(2) никогда не возвращает меньше, чем было запрошено (если, конечно, файл не короче).
Итак, мой вопрос: в Linux, в каких случаях может read(2) возвращать меньше, чем было запрошено, если чтение из открытого файла и EOF не встречается, а читаемый объем составляет максимум несколько килобайт?
Некоторые предположения:
- Могут ли полученные сигналы прервать такое чтение, но не привести к его сбою?
- Могут ли разные файловые системы влиять на это поведение? Есть ли что-то особенное в jffs2?