shell - 如何在 clozure cl 中杀死一组进程?

标签 shell lisp kill ccl

我想在 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/

相关文章:

带有空格的参数的 Git 别名

unix - 杀死 UNIX 系统上已失效的进程

linux - 内存充足的 Oom-killer(内存不足)(?!) - inotify

java - 服务崩溃并重新启动

java - 从 shell 脚本运行 java 时为 "No such file or directory"

linux - 如何在 bash 脚本中使用 for 循环复制和重命名文件?

android - 如何在 Android Shell 中获取以纳秒为单位的当前 Unix 时间?

lisp - Lisps 何时/为何开始使用分号进行注释?

lisp - 如何使用 Lisp 中的迭代函数打印列表中奇数位置的元素?

functional-programming - 计划作业