【发布时间】:2015-05-23 15:11:16
【问题描述】:
尊敬的 StackExchange 会员,
我最近开始玩弄 Common Lisp,并想创建一个 Web 界面来管理经过改装的 Minecraft 服务器。我已经尝试过this solution,但在这种情况下,函数只是挂起并且永远不会返回。
我的代码如下所示:
(defvar *proc*)
(defun create-minecraft-proc ()
(let* ((binary "/usr/bin/java")
(jar "/home/user/temp/Vanilla 1.8/minecraft.jar")
(dir "/home/user/temp/Vanilla 1.8")
(args (list "-jar" jar "nogui")))
(setf *proc* (sb-ext:run-program binary args :directory dir :wait nil :input :stream :output :stream))))
(defun copy-stream (in out)
(loop for line = (read-line in nil nil)
while line
do (write-line line out)))
(defun get-minecraft-output ()
(with-open-stream (proc-stream (process-output *proc*))
(with-output-to-string (out)
(copy-stream (process-output *proc*) out)))
我怎样才能得到一个包含完整进程输出的字符串,而不必等待它终止?
【问题讨论】:
标签: subprocess common-lisp sbcl