在读取空字符读取()

时间:2018-05-31 13:07:17

标签: c serial-port java-native-interface

我编写了从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()是否将空字符读作数据?

1 个答案:

答案 0 :(得分:4)

the POSIX documentation for read()

  

read()函数将尝试从与开放文件描述符nbyte关联的文件中读取fildes个字节到buf指向的缓冲区。

读取的字节的实际值无关紧要。

是的,read()将读取NUL个字节。