我已经编写了从USB端口读取的程序(没有连接到任何东西(。从java我传递int文件描述符和字节数组,在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(( 是否将空字符读取为数据?
根据 POSIX 文档read()
:
read()
函数应尝试从与打开的文件描述符关联的文件中读取nbyte
字节,fildes
,读取到buf
指向的缓冲区中。
读取的字节的实际值无关紧要。
所以是的,read()
将读取NUL
字节。