LINUX.ORG.RU

zero-byte message block

 ,


0

1

Здравствуйте. Читаю я себе man 3p read, и тут внезапно:

In byte-stream mode, read() shall accept data until it has read nbyte bytes, or until there is no more data to read, or until a zero-byte message block is encountered. ...The read() function shall then return the number of bytes read, and place the zero-byte message back on the STREAM to be retrieved by the next read()

Подскажите, что это за zero-byte messsage block? Это сообщение нулевой длины? Как его вообще можно принять? Байт ведь либо есть либо нет.

Или это сообщение с байтом равным нулю?

И вообще зачем это нужно? И так всё сложно донельзя в этих io функциях, а тут еще zero-byte какой-то

★★★★★

Последнее исправление: makoven (всего исправлений: 1)

в некоторых протоколах и имплементациях (http://www.openss7.org/streams.html) вполне себе можно принять и/или передать блок нулевой длины

да и вообще, ненадо выдерать фразы из контекста. Полностью это звучит так:

How read() handles zero-byte STREAMS messages is determined by the current read mode setting. In byte-stream mode, read() shall accept data until it has read nbyte bytes, or until there is no more data to read, or until a zero-byte message block is encountered. The read() function shall then return the number of bytes read, and place the zero-byte message back on the STREAM to be retrieved by the next read(), getmsg(), or getpmsg(). In message-nondiscard mode or message-discard mode, a zero-byte message shall return 0 and the message shall be removed from the STREAM. When a zero-byte message is read as the first message on a STREAM, the message shall be removed from the STREAM and 0 shall be returned, regardless of the read mode.

вам перевести, или адрес translate.[google|yandex] вам известен ?

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

вам перевести

... read() должна вернуть количество прочитаных байт и поместить нулевой блок обратно в поток для следующего вызова read()

А следующий вызов read() наткнется на нулевой блок, который оставил там предыдущий read() и должен будет поместить прочитанный нулевой блок обратно в стрим для следующего read()

А следующий вызов read() ...

makoven ★★★★★
() автор топика
Последнее исправление: makoven (всего исправлений: 1)
Ответ на: комментарий от makoven

и должен будет поместить прочитанный нулевой блок обратно в стрим для следующего read()

Прочитайте абзац из man'а до конца.

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