Вы не можете просто открыть случайный pty и ожидать, что он сработает. (На самом деле, вы должны открывать каждый из них по очереди, пока не найдете свободный). Вместо этого используйте правильный socat
синтаксис для него:
socat PTY,link=/tmp/mytty TCP:192.168.254.106:8080
Это откроет основную сторону доступного псевдотерминала, создаст символическую ссылку под /tmp/mytty
(изменяйте соответственно) на ведомой стороне и переместится между ведущей стороной и вашим удаленным портом TCP.
Теперь вы можете использовать /tmp/mytty
(или связанный с ним подчиненный pty) как обычный tty. («Виртуальный локальный com-порт» звучит подозрительно, как термин Windows).
Кстати, это будет работать на всех платформах, которые поддерживают псевдо-терминалы, потому что socat
использует подходящий для платформы метод.
редактировать
То, что вы видите в качестве опции в программе Java, которую вы запускаете, полностью зависит от программы Java, которую вы запускаете, о которой я ничего не знаю (и вы нам ничего не сказали). Вполне возможно, что в Java-программе есть дополнительные опции, чтобы рассказать о других tty. Также возможно, что у него нет таких опций.
Файлы внизу /dev
являются частью специальной файловой системы, devfs
которая показывает устройства, доступные ядру. По-видимому, вы не можете создавать символические ссылки на него.
Так что, если все, что делает ваша Java-программа, это сканирование файлов /dev/cu.*
, то вам не повезло.
Вы всегда можете попытаться найти исходный код своей Java-программы и изменить его. Или даже исправьте двоичный файл (замените строку /dev/cu
чем-нибудь другим).