Linux,在子进程上超时

Linux,在子进程上超时,第1张

概述好吧,我需要编写一个调用脚本的代码,如果脚本中的 *** 作挂起,则终止该过程. 首选语言是Python,但我也在查看C和bash脚本文档. 似乎是一个简单的问题,但我无法决定最佳解决方案. 从目前为止的研究: > Python:虚拟机使用的是一些奇怪的线程模型 一次一个线程,不会工作? > C:到目前为止,首选的解决方案似乎是使用SIGALARM fork EXECL.但SIGALARM不是堆安全的,所 好吧,我需要编写一个调用脚本的代码,如果脚本中的 *** 作挂起,则终止该过程.

首选语言是Python,但我也在查看C和bash脚本文档.

似乎是一个简单的问题,但我无法决定最佳解决方案.

从目前为止的研究:

> Python:虚拟机使用的是一些奇怪的线程模型
一次一个线程,不会工作?
> C:到目前为止,首选的解决方案似乎是使用SIgalARM fork
EXECL.但SIgalARM不是堆安全的,所以它可以废弃一切?
> Bash:超时计划?所有发行版都不标准?

由于我是linux的新手,我可能没有意识到有这些功能的500种不同的问题,所以有谁能告诉我最安全和最干净的方法是什么?

解决方法 在bash中你可以做类似的事情:

>在后台启动脚本/程序&
>获取后台进程的进程ID
>睡一段时间
>然后杀死进程(如果它已经完成你不能杀死它)或者你可以检查进程是否仍然存在然后杀死它.

例:

sh long_time_script.sh &pID=$!sleep 30skill $pID

你甚至可以尝试使用陷阱’script_stopped $pID’SIGCHLD – 请参阅bash man获取更多信息.

更新:我发现了其他命令timeout.它完全符合您的需要 – 运行带有时间限制的命令.例:

timeout 10s sleep 15s

将在10秒后杀死睡眠.

总结

以上是内存溢出为你收集整理的Linux,在子进程上超时全部内容,希望文章能够帮你解决Linux,在子进程上超时所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1021087.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存