Передача более двух подпроцессов с помощью uiop: не запускается программа - PullRequest
2 голосов
/ 22 марта 2020

Я пытаюсь направить ввод / вывод трех или более подпроцессов, используя uiop:launch-program, что эквивалентно примерно так в оболочке: C:\> ipconfig | sort | strings.

Я попытался получить поток вывода одной программы и устанавливая его как входной поток другого, многократно до последней программы. Ниже мой код для трех подпроцессов, который не работает.

(uiop:run-program "strings"
                  :input (uiop:process-info-output
                          (uiop:launch-program "sort"
                                               :input
                                               (uiop:process-info-output
                                                (uiop:launch-program "ipconfig"
                                                                     :output :stream))
                                               :output :stream))
                  :output :interactive)

Это приводит к пустой строке, когда я думаю, что это не должно.

Интересно то, что трубопровод между два подпроцесса работают как положено. Ниже приведен мой код для двух подпроцессов, который работает.

(uiop:run-program "sort"
                    :input
                    (uiop:process-info-output
                     (uiop:launch-program "ipconfig"
                                          :output :stream))
                    :output :string)

Это возвращает непустую строку, которую я ожидаю.

Пожалуйста, помогите мне воплотить мои мечты о соединении трех программ вместе правда.

...