我想在 ccl 中运行一个 shell 命令,但是这个命令可能因为某些原因被挂起。所以我想杀死这个命令生成的所有子进程。我该怎么做?
我试过 trivial-shell 来运行 shell 命令,当命令没有挂起时,它运行良好。
我还使用 trivial-shell 中的 with-timeout 宏来检查超时,它只是给我一个超时错误条件,shell 进程仍然卡在那里。在这里,我只想把他们都杀了,然后返回一些东西。
谢谢大家
最佳答案
据我所知,trivial-shell
仅提供同步 shell 调用,因此没有简单的方法来终止正在进行的子进程。
我建议使用 :wait nil
调用 Clozure Common Lisp 的特定于实现的 ccl:run-program
函数以异步运行作业。然后,如果需要,您可以在正在运行的进程上调用 ccl:signal-external-process
来终止它。 Documentation here .
关于shell - 如何在 clozure cl 中杀死一组进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8585537/