Вот еще один способ Lisp:
(defun execute (program parameters &optional (buffer-size 1000))
(let ((proc (sb-ext:run-program program parameters :search t :output :stream))
(output (make-array buffer-size :adjustable t :fill-pointer t
:element-type 'character)))
(with-open-stream (stream (sb-ext:process-output proc))
(setf (fill-pointer output) (read-sequence output stream)))
output))
Затем, чтобы получить вашу строку:
(execute "cat" '("/etc/hosts"))
Если вы хотите запустить команду, которая создает распечатки большого количества информации, в STDOUT, вы можете запустить ее так:
(execute "big-writer" '("some" "parameters") 1000000)
Последний параметр предварительно выделяет большое количество места для вывода из большого писателя. Я предполагаю, что эта функция может быть быстрее, чем чтение выходного потока по одной строке за раз.