我为 Android 编写了一个 C/C++ 应用程序 (NDK),它可以打开一个虚拟端口进行串行通信。它在同一进程中从端口写入和读取字节。到目前为止,这是可行的,我不必为了做到这一点而根植我的设备。这是一个简单的程序,它执行以下操作:
int fd = open("/dev/ptmx", O_RDWR | O_NOCTTY);
if (fd == -1) {
LOGW("error opening file");
return 1;
}
grantpt(fd);
unlockpt(fd);
char* pts_name = ptsname(fd);
LOGI("ptsname: %s\n", pts_name);
char* inputbyte = "This is a test\n";
char byte;
int numOfBytesWritten = write(fd, inputbyte, strlen(inputbyte));
LOGI("Number of bytes written: %d\n", numOfBytesWritten);
while (read(fd, &byte, 1) == 1) {
LOGI("Byte: %c\n", byte);
}
close(fd);
现在的问题是,如果我想在两个进程(两个应用程序)中做同样的事情,它就行不通了。一个进程打开 /dev/ptmx,另一个进程应该打开 /dev/pts 目录。每次从服务器尝试打开 /dev/pts 目录时,我都会收到错误“错误打开文件”(-1)。我已经植根了我的设备,但这仍然无法正常工作。打开 /dev/ptmx 目录后我有一个睡眠功能,以便等待从机。
我应该怎么办?有任何想法吗?