我已經爲Android編寫了一個C/C++應用程序(NDK),它可以打開用於串行通信的虛擬端口。它在同一個進程中從端口寫入和讀取字節。這是迄今爲止工作,我不需要爲了做到這一點而根植我的設備。這是一個簡單PROGRAMM其執行以下操作:使用Android上的虛擬串行通信在兩個進程(應用程序)中讀/寫字節
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);
現在的問題是,如果我想要做的兩個進程(兩個應用程序)這同一件事它doesn't工作。一個進程打開/ dev/ptmx,另一個進程應該打開/ dev/pts目錄。每次奴隸試圖打開/ dev/pts目錄我得到錯誤「錯誤打開文件」(-1)。我植根於我的設備,但仍然無法正常工作。打開/ dev/ptmx目錄以等待從服務器後,我有一個睡眠功能。
我該怎麼辦?有任何想法嗎?
沒有語言「C/C++」!只有兩種不同的語言C和C++。 – Olaf