日期:2014-05-16  浏览次数:20822 次

C++代码调用一个可执行程序后,想在5分钟后kill掉它,应当如何做?
如题。
我的想法是先system( "a.out ");
但之后如何得知这个a.out的进程ID,又如何在5分钟之后kill掉它,还请指教。
对于kill函数也不熟悉,刚刚接触Linux下的C/C++编程,还请指教。

------解决方案--------------------
system( "killall -9 a.out ")
------解决方案--------------------
system( "ps -A|grep a.out > tmp.txt ");
File *fp = fopen( "tmp.txt ");
while(fgets(buf,255,fp)!=NULL)
{
/*解析每行数据,根据名称匹配打到相应的进程
pid = ;
break;
*/
}
sprintf(cmd, "kill -9 %d ",pid);
system(cmd);
------解决方案--------------------
...
int childPid;
int pid=fork();
if(pid> 0){
childPid=pid;
execvp( "a.out ",argv); //argv: 参数列表,一个字符串指针数组
}
...
...
//after 5 minute,and in somewhere
kill(childPid,9); //kill a.out process
------解决方案--------------------
楼主写出这样的程序来,也真是害人不浅啊

难道你就不能用fork/exec/alarm/signal/kill吗?