Sie können dafür ein pty ("Pseudo-Teletyp", wobei eine serielle Schnittstelle ein "echter Teletyp" ist) verwenden. Öffnen Sie an einem Ende /dev/ptyp5
, und hängen Sie dann Ihr Programm an /dev/ttyp5
an; ttyp5
verhält sich wie ein serieller Port, sendet/empfängt aber alles, was er tut, über /dev/ptyp5.
Wenn Sie es wirklich brauchen, um mit einer Datei namens /dev/ttys2
zu sprechen , dann verschieben Sie einfach Ihren alten /dev/ttys2
aus dem Weg und mache einen Symlink von ptyp5
bis ttys2
.
Natürlich können Sie auch eine andere Zahl als ptyp5
verwenden . Wählen Sie vielleicht eine mit einer hohen Nummer, um Duplikate zu vermeiden, da alle Ihre Login-Terminals ebenfalls ptys verwenden werden.
Wikipedia hat mehr über ptys:http://en.wikipedia.org/wiki/Pseudo_terminal
Verwenden Sie dazu socat:
Zum Beispiel:
socat PTY,link=/dev/ttyS10 PTY,link=/dev/ttyS11
Ergänzung der Antwort von @slonik.
Sie können socat testen, um einen virtuellen seriellen Port zu erstellen, indem Sie das folgende Verfahren ausführen (getestet auf Ubuntu 12.04):
Öffnen Sie ein Terminal (nennen wir es Terminal 0) und führen Sie es aus:
socat -d -d pty,raw,echo=0 pty,raw,echo=0
Der obige Code gibt zurück:
2013/11/01 13:47:27 socat[2506] N PTY is /dev/pts/2
2013/11/01 13:47:27 socat[2506] N PTY is /dev/pts/3
2013/11/01 13:47:27 socat[2506] N starting data transfer loop with FDs [3,3] and [5,5]
Öffnen Sie ein anderes Terminal und schreiben Sie (Terminal 1):
cat < /dev/pts/2
Der Portname dieses Befehls kann je nach PC geändert werden. es hängt von der vorherigen Ausgabe ab.
2013/11/01 13:47:27 socat[2506] N PTY is /dev/pts/**2**
2013/11/01 13:47:27 socat[2506] N PTY is /dev/pts/**3**
2013/11/01 13:47:27 socat[2506] N starting data transfer loop with FDs
Sie sollten die im hervorgehobenen Bereich verfügbare Nummer verwenden.
Öffnen Sie ein anderes Terminal und schreiben Sie (Terminal 2):
echo "Test" > /dev/pts/3
Nun zurück zu Terminal 1 und Sie sehen die Zeichenfolge "Test".