Использовать существующий поток clisp
Я новичок в использовании lisp, использующий clisp-2.49.
Я пытаюсь написать lisp, чтобы имитировать этот довольно простой кусок bash:
for i in $(program-1)
do
some-logic
program-2 $i
done | program-3
Существуют различные способы выполнения программ 1 и 3 (run-program, make-pipe-io-stream и, возможно, другие), каждый из которых оценивает форму и возвращает мне поток для использования. Но для программы 2 мне нужно запустить программу и указать форме использовать поток, который я уже открыл. Я не могу найти форму для этого. Я что-то упустил из виду? Есть ли какая-то тонкость, о которой я не знаю?
Большое спасибо, Р.
1 ответ
Вы можете использовать недокументированную функцию ext::launch
и передать :output pipe-stream
,
Кроме того, вы можете передать весь сценарий оболочки в виде строки в EXT: RUN-SHELL-COMMAND.
Однако, вообще говоря, Lisp не предназначен для замены оболочки. Вы, вероятно, были бы лучше, жонглируя program-*
исполнение в оболочке.