我正在使用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).当我处理这个错误时,我的代码总是到达相同的点。下面是代码的摘录:
;; ... 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))我认为这个错误发生在loop语句内部,因为并不是所有的commands都写入到输出流中。
如何进一步调试并解决此问题?
发布于 2017-03-15 01:36:54
“断开的管道”意味着当Lisp进程正在向管道写入数据时,本应从管道读取数据的进程已经死了。
哦,问题可能出在Lisp之外。您需要查看另一个进程发生了什么。
PS。您可以将write-string和princ合并到单个write-line中。此外,如果您立即调用finish-output,则不需要force-output。
https://stackoverflow.com/questions/42791455
复制相似问题