Почему read () возвращает 0, когда я читаю из / dev / Channel? - PullRequest
0 голосов
/ 20 ноября 2018

Я пытался использовать функцию 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: И как мне узнать, сколько байтов я на самом деле прочитал?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...