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