如何杀死clozure cl中的一组进程?

时间:2011-12-21 05:40:38

标签: shell lisp kill ccl

我想在ccl中运行一个shell命令,但是由于某种原因,这个命令可能会被挂起。所以我想杀死这个命令生成的所有子进程。我怎么能这样做?

我已经尝试过trivial-shell来运行shell命令,当命令没有挂起时,它运行良好。

我也使用with-timeout宏来检查超时,它只是给我一个超时错误的条件,shell进程仍在那里。在这里,我只想杀死他们并返回一些东西。

谢谢大家。

1 个答案:

答案 0 :(得分:2)

据我所知,trivial-shell仅提供同步shell调用,因此没有简单的方法来终止正在进行的子进程。

我建议使用ccl:run-program调用Clozure Common Lisp的特定于实现的:wait nil函数来异步运行作业。然后,您可以在正在运行的进程上调用ccl:signal-external-process以在需要时将其终止。 Documentation here