我想在ccl中运行一个shell命令,但是由于某种原因,这个命令可能会被挂起。所以我想杀死这个命令生成的所有子进程。我怎么能这样做?
我已经尝试过trivial-shell来运行shell命令,当命令没有挂起时,它运行良好。
我也使用with-timeout宏来检查超时,它只是给我一个超时错误的条件,shell进程仍在那里。在这里,我只想杀死他们并返回一些东西。
谢谢大家。
答案 0 :(得分:2)
据我所知,trivial-shell
仅提供同步shell调用,因此没有简单的方法来终止正在进行的子进程。
我建议使用ccl:run-program
调用Clozure Common Lisp的特定于实现的:wait nil
函数来异步运行作业。然后,您可以在正在运行的进程上调用ccl:signal-external-process
以在需要时将其终止。 Documentation here