Vous pouvez utiliser un pty ("pseudo-télétype", où un port série est un "vrai télétype") pour cela. D'une extrémité, ouvrez /dev/ptyp5
, puis attachez votre programme à /dev/ttyp5
; ttyp5
agira comme un port série, mais enverra/recevra tout ce qu'il fait via /dev/ptyp5.
Si vous en avez vraiment besoin pour parler à un fichier appelé /dev/ttys2
, puis déplacez simplement votre ancien /dev/ttys2
à l'écart et créez un lien symbolique à partir de ptyp5
à ttys2
.
Bien sûr, vous pouvez utiliser un nombre autre que ptyp5
. Choisissez-en un avec un nombre élevé pour éviter les doublons, car tous vos terminaux de connexion utiliseront également ptys.
Wikipédia en dit plus sur ptys :http://en.wikipedia.org/wiki/Pseudo_terminal
Utilisez socat pour cela :
Par exemple :
socat PTY,link=/dev/ttyS10 PTY,link=/dev/ttyS11
Complétant la réponse de @slonik.
Vous pouvez tester socat pour créer un port série virtuel en procédant comme suit (testé sur Ubuntu 12.04) :
Ouvrez un terminal (appelons-le Terminal 0) et exécutez-le :
socat -d -d pty,raw,echo=0 pty,raw,echo=0
Le code ci-dessus renvoie :
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]
Ouvrez un autre terminal et écrivez (Terminal 1) :
cat < /dev/pts/2
le nom du port de cette commande peut être modifié en fonction du pc. cela dépend de la sortie précédente.
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
vous devez utiliser le numéro disponible dans la zone en surbrillance.
Ouvrez un autre terminal et écrivez (Terminal 2) :
echo "Test" > /dev/pts/3
Revenons maintenant au Terminal 1 et vous verrez la chaîne "Test".