Lisp 劣质外壳实时打印输出

Lisp 劣质外壳实时打印输出,lisp,common-lisp,sbcl,Lisp,Common Lisp,Sbcl,我正在使用sub劣shell:run启动一个长期运行的任务,该任务通常会失败(这是一个构建验证例程) 我的主要问题是,我无法找到一种方式来查看已启动活动的“实时”输出 我想要实时提要的原因是,如果发生错误,我就看不到输出;我查看了ON-ERROR:键,但结果只表明退出代码为1。这是有道理的,因为这个键似乎是一个回调,用于执行某种恢复操作。但是,如果我的任务失败了,我还想知道它失败的原因,这隐藏在命令的输出中,而命令的输出似乎不可访问 我试着这样调用RUN: (inferior-shell:run

我正在使用
sub劣shell:run
启动一个长期运行的任务,该任务通常会失败(这是一个构建验证例程)

我的主要问题是,我无法找到一种方式来查看已启动活动的“实时”输出

我想要实时提要的原因是,如果发生错误,我就看不到输出;我查看了
ON-ERROR:
键,但结果只表明退出代码为1。这是有道理的,因为这个键似乎是一个回调,用于执行某种恢复操作。但是,如果我的任务失败了,我还想知道它失败的原因,这隐藏在命令的输出中,而命令的输出似乎不可访问

我试着这样调用
RUN

(inferior-shell:run
    (pod-command file)        ; this generates a string shell
                              ;   command from the arg FILE
    :on-error #'print         ; tells me that the exit code was 1 
    :output *standard-output* ; default, if I understand correctly
    :interactive t)           ; this was a shot in the dark
即使是在成功的情况下,在生产过程中(而不是在最后)看到输出仍然是很好的,但这只是一个很好的选择

我才刚刚开始学习Lisp,所以如果我错过了一些明显的东西,我很抱歉


我正在用
sbcl
中的
quickload
加载
sub劣shell
查看
sub劣shell:run
的文档字符串。您可以将
输出
错误输出
设置为
:字符串
,这意味着它们将分别作为第一个和第二个返回值。第三个返回值是退出代码。您可以使用
多值绑定
绑定这些值。如果
:on error
nil
,则在退出代码为非零的情况下,不会发出错误信号

例如:

CL-USER> (inferior-shell:run "git status"
                             :on-error nil
                             :error-output :string
                             :output :string)
""
"fatal: Not a git repository (or any of the parent directories): .git
"
128

我想他想要的是不同的东西:实时输出,命令运行时的输出。我把这部分解释为“很好”(第三段到最后一段)。通常不需要分析生成的输出。很抱歉,我意外地在一个问题中问了两个问题,并且没有更新标题以反映优先级。我将测试
错误输出
键,然后接受答案(如果有效的话)!我尝试了
:错误输出:string
错误输出*标准输出*
,但都不起作用;我还是得到了
#
。然而,以你的例子,我确实得到了预期的结果。我想我应该接受你的回答,因为它是正确的;它不能解决我的特殊错误。不,我收回我的错误。完美的解决方案,非常感谢!感谢您的
多值绑定
提示;我以前遇到过多次退货,但没有找到处理这些退货的好办法。