Итак, я прошел мимо фактического получения программы для запуска из SBCL Lisp, используя нижнюю оболочку (предположительно, UIOP будет просто отлично). Во всяком случае, теперь, когда я могу это сделать, я до сих пор не знаю, как взаимодействовать с программой, если она работает в фоновом режиме.Inferior Shell или UIOP: Взаимодействие с фоновым процессом
Все эти функции, такие как трубы и потоки, связанные с stdin и stdout запущенной программы, рекламируются, просто не документируются. Казалось бы, это самое главное.
Есть ли у кого-нибудь пример такого?
Любая помощь приветствуется.
-Todd
Это, вероятно, слишком широкий вопрос для SO. У вас есть простой пример для показа? В чем что-то не ведет себя так, как вы ожидали? – Renzo
@ Renzo, как я понимаю: SBCL имеет 'sb-ext: run-program', который позволяет вам запускать процесс асинхронно и подключать к нему входные и выходные потоки. Затем вы можете общаться с ним, используя потоки в течение всего срока действия программы (например, запустите 'gnuplot' и продолжайте ее работу и построите с использованием того же процесса, а не перезапускайте его все время). В переносном режиме я видел только синхронный: запустите процесс и передайте начальные аргументы - дождитесь окончания. – mobiuseng
Библиотека ['EAZY-PROCESS'] (https://github.com/guicho271828/eazy-process) упрощает создание каналов и асинхронных процессов, но намеренно не обеспечивает поддержку потоков. Все основано на файлах и дескрипторах файлов. Тем не менее, вы можете использовать временные файлы. – coredump