我需要我的程序来运行其他程序,但如果其他程序不会在一定的时间内返回,我需要杀死它。 我想出了以下解决scheme似乎正在工作。
int main() { int retval,timeout=10; pID_t proc1=fork(); if(proc1>0) { while(timeout) { waitpID(proc1,&retval,WNOHANG); if(WIFEXITED(retval)) break; //normal termination sleep(1); --timeout; if(timeout==0) { printf("attempt to kill processn"); kill(proc1,SIGTERM); break; } } } else if(proc1==0) { execlp("./someprogram","./someprogram","-a","-b",NulL); } //else if fork Failed etc. return 0; }
我需要我的程序尽可能健壮,但我是在linux下编程的新手,所以我可能不知道可能存在的问题。 我的问题是:1.这是一个适当的解决这个特定的问题,还是有更好的方法? 2.有没有人看到可能导致意外行为或系统资源泄漏的问题或错误?
制作一个C程序来编译另一个
使用button/事件来显示一个新的窗体并隐藏现有的C#
应用程序内存使用跟踪
testing某个给定ID的进程是否正在linux上运行的简单方法是什么?
使用c#检查工作站locking/解锁更改
(WIFEXITED(retval))如果程序被一个信号杀死(包括由于分段冲突造成的崩溃(WIFEXITED(retval))将不会返回真。
可能最好只是检查waitpID的成功返回。 只有当程序终止时(无论是否自愿)才会发生。
取决于确保这个过程是多么重要…
在用SIGTERM杀死进程之后,你可以再睡一会,如果还没有结束,可以使用SIGKILL 。
总结以上是内存溢出为你收集整理的更好的方式来监视和杀死其他程序在Linux中停滞的过程?全部内容,希望文章能够帮你解决更好的方式来监视和杀死其他程序在Linux中停滞的过程?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)