читает () в C читать нулевой символ - PullRequest
0 голосов
/ 31 мая 2018

Я написал программу для чтения с USB-порта (который ни к чему не подключен). Из Java я передаю int filedescriptor и байтовый массив, а в jni я конвертирую байтовый массив в char * и использую read ().

jbyte *bufferPtr2 = (*env)->GetByteArrayElements(env, buf, NULL);  
unsigned char* d_data2 = (unsigned char*)bufferPtr2;    
n = read(fd, d_data2, lengthOfArray); 

После выполнения n = 1, но d_data2 пусто.Почему это?Читает ли () нулевой символ как данные?

1 Ответ

0 голосов
/ 31 мая 2018

Per документация POSIX для read():

Функция read() должна пытаться прочитать nbyte байтов из файла, связанного с дескриптором открытого файла,fildes, в буфер, на который указывает buf.

Фактическое значение прочитанных байтов не имеет значения.

Так что да, read() будет читатьNUL байт.

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