Описание тега qr-code
Я пишу сборник сценариев для разговора с внешней программой. Моя проблема заключается в том, что скрипты работают только "живьем" в течение короткого времени (срабатывает нажатием клавиши в более крупной программы), но внешняя программа должна остаться между вызовами, и была изначально разработана для интерактивного использования (отладчик думаю).
Если бы я просто хотел написать один скрипт для запуска программы, я бы открыл Pty, чтобы его и отправлять/получать данные о том, что. Это работает (мои скрипты на LUA и lpty может справиться с ПТИ), но она не может продолжать выполнение программы, когда сценарий завершает работу.
Если внешняя программа предложила мне гнездо для подключения (как GDB делает), я мог бы просто сохранить где-то имя и у каждого скрипта подключиться к этому сокету. Но это было только предназначено, чтобы быть использованы в интерактивном режиме.
Я мог бы написать демон, который запускает внешнюю программу, открывает ПТИ и затем прослушивает сам сокет. Затем скрипт мог подключиться к сокет демона и отправить данные, которые демон будет ждем программа на ПТИ и отправить результаты обратно.
Формат данных, которые я меняю с помощью внешней программы является построчным, но я не знаю заранее, сколько строк я собираюсь вернуться из одной команды. Не проблема с Pty, но немного больше работы с luasocket
.
Мне интересно, если нет лучшего способа сделать это. Можно ли как-то открыть Pty в программу и сделать ее "адрес", из которого я позже можете подключать и отключать несколько раз из моих скриптов? (Может быть только один сценарий когда-нибудь работать в то время, так что параллелизм-это не проблема.) Что бы избежать с помощью сокетов вообще.
Или есть какая-то комбинация параметров в сокат
, что делает именно этот уже?