LINUX.ORG.RU

read


0

0

Почему-то в мане не сказано про ситуацию, когда read возвращает байтов больше чем запрошено. Сказано только про меньшее количество. Где можно осведомиться? И вообще, насколько это нормально?

★★★

при случае если в файле больше нет. например ты пытаешся прочитать 1000 байт с файла размером 100 байт.

> И вообще, насколько это нормально?

систематически используется на нерегулярных файлах типа портов, сокетов .....

cvv ★★★★★
()
Ответ на: комментарий от anonymous

> этого не может быть, потому что этого не может быть никогда

да ну? а если read вернул -1, а смотришь ты это возвращенное значение как unsigned - как раз и получится подобная ситуация

ananas ★★★★★
()
Ответ на: комментарий от ananas

мда... отрицательные значения это вполне нормальное явление, их

используют для возвращения кода ошибки.

ssize_t read(...)

aton
()
Ответ на: комментарий от cvv

>при случае если в файле больше нет. например ты пытаешся прочитать 1000 байт с файла размером 100 байт.

>> И вообще, насколько это нормально?

>систематически используется на нерегулярных файлах типа портов, сокетов .....

невнимательно прочитал вопрос.

действительно ты интерпретируеш -1 как целое беззнаковое - иначе никак.

cvv ★★★★★
()

int main(void) {
char c;
int r;
while(1) {
r = read(0,&c,1);
}
}

Вот при определенных условиях r равняется трем. И в символ ничего не заносится
Сразу скажу, что это получается в результате внедрения кода (любого) в этот процесс, например
nop
nop
ret
(\x90\x90\xc3)
Код и трассировщик верные, пашут на остальных процессах, где нет read.
Вот и интересно, с какого бодуна эта тройка берется...

Chumka ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.