我想在 ccl 中运行一个 shell 命令,但是这个命令可能由于某种原因被挂起。所以我想杀死这个命令生成的所有子进程。我怎样才能做到这一点?
我试过 trivial-shell 来运行 shell 命令,当命令没有挂起时,它运行良好。
我还使用了在 trivial-shell 中的 with-timeout 宏来检查超时,它只是给了我一个超时错误条件,shell 进程仍然挂在那里。在这里,我只想将他们全部杀死并返回一些东西。
谢谢你们。
据我所知,trivial-shell
只提供了一个同步的 shell 调用,所以没有简单的方法来终止正在进行的子进程。
我建议调用 Clozure Common Lisp 的特定于实现的ccl:run-program
函数:wait nil
来异步运行作业。ccl:signal-external-process
然后,如果需要, 您可以调用正在运行的进程将其杀死。文档在这里。