|
在一项网络监控项目模块中,需要在我的模块中加入管理一台UNIX系统上所有进程的功能,比如可以重新启动一个进程.
以下以简单代码示例:
//1.exe
...
int main()
{
//socket通信,接收命令,灭掉活着的进程2.exe
system("./2.exe");
printf("1");
return 0;
}
//2.exe
int main()
{
pirntf("2");
sleep(60); //延时60秒
return 0;
}
以上遇到的问题是,当进程1用system命令重新启动进程2的时候,要等待进程2执行完毕后才返回到进程1的执行上下文中,这不是我期望的,因为在部署这样一个监控代理时并不知道中心指令中要重新启动的是什么进程,进程中有没有类似延时的程序段.涉及到代理启动后要向中心回送信息.如果一直等待到启动进程结束执行才能去回送,那将是郁闷的.
我考虑到去启动一个子进程去完成进程2的启动,但是思来想去也不是太适合,因为我想让重新启动的进程2不去依赖进程1的任何上下文环境,这样守护进程也不是很合适.
哪位大侠能指点一些,我期望能在执行system命令时有些可以变通的方法.
将会非常感谢!!! |
|