ich einen Zeichengerätetreiber auf CentOS 7. Der Treiber implementiert habe normal funktioniert, wenn es von einem C-Programm aufgerufen wird, thusly ...Linux-Gerätetreiber mit falscher Zählung genannt
char bytes[8];
int fd = open("/dev/fortuna", O_RDONLY);
if (fd < 0) {
perror("File open error: ");
return -1;
}
int in = read(fd, bytes, 8);
if (in < 0) {
perror("File read error: ");
}
close(fd);
Die Treiberfunktion las wird mit count = 8 aufgerufen und das Programm wird ohne Fehler abgeschlossen. Die Treiberfunktion Prototyp ...
static ssize_t fortuna_read(struct file *filp, char *buff, size_t count, loff_t *offp);
Wenn jedoch das Lesen von einem C++ Strom aufgerufen wird, wie folgt ...
char bytes[8];
std::ifstream in("/dev/fortuna");
if (in.good()) {
in.read(bytes, 8);
}
in.close();
Die Treiberlesefunktion bei count = 8191 aufgerufen wird. wenn der Fahrer von einem Java-Filereader aufgerufen wird, wie folgt ...
File file = new File("/dev/fortuna");
file.setReadOnly();
FileReader reader = new FileReader(file);
char[] cbuf = new char[8];
int read = reader.read(cbuf);
reader.close();
der Fahrer Lesefunktion wird mit Zählung aufgerufen = 8192. die Schreibfunktionen ähnlich verhalten.
Google hat mich im Stich gelassen. Hilfe?
Vielen Dank, mein Herr. Ihre Antwort führte mich auch zur Java-Lösung. – SteveB