1

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

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

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

谢谢你们。

4

1 回答 1

2

据我所知,trivial-shell只提供了一个同步的 shell 调用,所以没有简单的方法来终止正在进行的子进程。

我建议调用 Clozure Common Lisp 的特定于实现的ccl:run-program函数:wait nil来异步运行作业。ccl:signal-external-process然后,如果需要, 您可以调用正在运行的进程将其杀死。文档在这里

于 2011-12-21T06:03:51.543 回答