Функции чтения
и записи
(и родственники например, send
, recv
, readv
, ...) может возвращать количество байтов, меньшее запрошенной длины чтения / записи, если прервано сигналом (ниже при определенных обстоятельствах) и, возможно, в других случаях. Есть ли четко определенный набор условий, когда это может произойти, или это в значительной степени зависит от реализации? Вот некоторые конкретные вопросы, ответы на которые меня интересуют:
SA_RESTART
), это приведет к тому, что операции ввода-вывода будут прерваны до того, как будут переданы какие-либо данные, которые будут перезапущены после возврата обработчика сигнала. Но если частичное чтение / запись уже произошло и обработчик сигнала не прерывает работу, вернется ли системный вызов немедленно с частичной длиной, или он будет возобновлен с попыткой чтения / записи остатка? Меня бы интересовали все три стандарта: требуемые, общие и специфичные для Linux. поведение.