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