Я пытался использовать функцию read()
для чтения с устройства канала, на которое я получаю данные.Данные возвращаются нерегулярно.
Драйвер устройства, управляющий каналом, предназначен для пробуждения и спящего режима тех, кто ожидает чтения на канальном устройстве.
Когда на канальном устройстве нет никаких данных, пользовательский поток спит и ждет, пока пользователь не проснется;когда внешний агент пишет в эту память, связанную с каналом, пользовательский поток активируется и может читать данные.
Я использую цикл for (;;)
, чтобы постоянно читать канал, потому что когда он читает данные, read () returns 0
.
Пример:
int ret, fd, receive;
fd = open("/dev/Channel_Normal0", O_RDWR, 0);
for(;;)
{
printf("Try to read /dev/Channel_Normal0...\n\n");
ret = read(fd, &receive, (sizeof(int)*4));
printf("read for Channel_Normal0...\n\n");
if(ret == 0)
exit(0);
}
Почему это return 0
, если он читает информацию?Потому что я могу использовать информацию, которую читаю.
PS: И как мне узнать, сколько байтов я на самом деле прочитал?