如何结束system进程?

YOUXI423 2009-12-25 11:54:20
先有段程序,想在定时时间到的时候退出程序:
eval{
local $SIG{ALRM} = sub {"Time out";exit(1);};
alarm(10);

while(1){
system($run_command);
}

print "Finish\n";
alarm(0);
}

在超时以后system进程依然在执行,想请问有没有什么办法结束system进程的,谢谢。
小弟分不多了,见谅。
...全文
478 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanjingfei 2009-12-26
  • 打赏
  • 举报
回复
perl,不知道呢。只知道C语言里面给进程发信号用kill().
YOUXI423 2009-12-26
  • 打赏
  • 举报
回复
哦,那请问如何把超时的信号发给子进程呢?才接触perl,问题多了点,呵呵
yanjingfei 2009-12-26
  • 打赏
  • 举报
回复
其实不是system()进程在执行,system()会调用fork()产生子进程,由子进程再调用shell命令来执行相应的system()函数里面的参数指定的程序。没有相应的代码把超时信号发送给子进程,所以子进程会继续执行。只是看起来像是system()进程在执行,其实不是。
YOUXI423 2009-12-26
  • 打赏
  • 举报
回复
perl里也有,不过现在好像用的system产生的子进程,system产生的子进程ID不知道怎么获得啊

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧