Stream CCL Lisp中的断管错误

Stream CCL Lisp中的断管错误,stream,pipe,lisp,Stream,Pipe,Lisp,我正在使用CCL Lisp并行运行批量实验。在我的机器上,一切正常。但是,我想在服务器上使用它。在服务器上执行此操作时,始终会收到以下错误消息: > Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/7) #x302001C2725D> : > Broken pipe during write > While executing: #<CCL::STANDARD-KERNEL-METHO

我正在使用CCL Lisp并行运行批量实验。在我的机器上,一切正常。但是,我想在服务器上使用它。在服务器上执行此操作时,始终会收到以下错误消息:

> Error: on #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/7) #x302001C2725D> : 
>        Broken pipe during write
> While executing: #<CCL::STANDARD-KERNEL-METHOD CCL::STREAM-IO-ERROR (STREAM T T)>, in process listener(1).
我认为这个错误发生在loop语句中,因为并不是所有命令都写入输出流


如何进一步调试并解决此问题?

管道破裂意味着当Lisp进程写入管道时,应该从管道中读取的进程已死亡

瞧,问题可能出在Lisp之外。您需要了解另一个进程发生了什么


另外,您可以将您的写入字符串和princ组合成一个单独的字符串。此外,如果您立即拨打电话,则不需要强制输出。

我建议使用CCL邮件列表来处理这些特定错误。也想想回溯。。。看邮件列表下面…他用PRINC写了一个LF。WRITE-LINE写新行,在Windows上可能是CRLF,在类Unix系统上可能是LF。如果软件只在Unix/Linux上运行,那也没关系。@RainerJoswig:是的,我知道。然而,一个需要特定版本新线的协议被打破了,我怀疑现在有很多协议即使您知道在您的特定平台上,在输入和解释中哪些字符代表NLF,也要同样对待CR、LF、CRLF和NEL。只有在输出时,您才需要区分它们。我认为一个人更可能忘记了写行,而不是故意编写一个坏的协议。协议不会坏,因为它们指定了特定的lineend。示例:HTTP需要CRLF。我认为W3C并不在乎我们是否认为它已经坏了。CRLF是必需的。
    ;; ... A really long function
    ;; write commands to processes
    (format t ".. writing commands to process ~a:~%" counter)
    (loop for c in commands
          do
          (format t "  ~a~%" c)
          (write-string c output-stream)
          (princ  #\lf output-stream))
    (force-output t)
    (force-output output-stream)
    (finish-output output-stream)
    #-lispworks
    (close output-stream))