Каковы альтернативы pexpect в Clojure, Racket, Scala и Common Lisp? - PullRequest
0 голосов
/ 13 июня 2018

Я хочу, чтобы библиотека взаимодействовала с приложениями CLI на этих языках.(Это не по теме в SO? Если да, то где я могу это опубликовать?)

Ответы [ 4 ]

0 голосов
/ 17 июня 2018

Не похоже, что есть реализация библиотеки, похожей на ожидаемую, для Racket;вы, безусловно, можете использовать system или subprocess для запуска процессов и взаимодействия с ними, используя порты ввода и вывода.

0 голосов
/ 13 июня 2018

В Common Lisp я бы использовал uiop:launch-program, у которого есть возможность сделать потоки stdin, stdout и stderr доступными из возвращенной информации о процессе.Примерно так:

(let ((ssh-process (uiop:launch-program (list* "ssh" hostname ssh-args)
                                       :input :stream
                                       :output :stream
                                       :error-output :stream)))
  (format (process-info-input ssh-process) "foo.sh a bar ~a" foo-arg)
  (frobnicate (read-line (process-info-output ssh-process))))

UIOP поставляется с ASDF, который поставляется со всеми современными реализациями Common Lisp.Вот ЧИТАТЬ: https://gitlab.common -lisp.net / asdf / asdf / blob / master / uiop / README.md .

0 голосов
/ 13 июня 2018

для Clojure - встроенный clojure.java.shell - хороший вариант для вызовов, ожидающих напрямую https://clojuredocs.org/clojure.java.shell/sh

0 голосов
/ 13 июня 2018

Я нашел список альтернатив в Википедии, но он не включает ни одного для Лиспов.: (

https://en.m.wikipedia.org/wiki/Expect

...