我编写了从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为空。为什么是这样? read()是否将空字符读作数据?
答案 0 :(得分:4)
每the POSIX documentation for read()
:
read()
函数将尝试从与开放文件描述符nbyte
关联的文件中读取fildes
个字节到buf
指向的缓冲区。
读取的字节的实际值无关紧要。
是的,read()
将读取NUL
个字节。