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

大虾们,怎么结束进程啊
写一个虚拟基类,派生自该类的所有应用只要有一个退出时,其它应用都随即安全退出。是不是要用进程间通信,用那种通信方式好呢,具体步骤是?

------解决方案--------------------
使用进程间通信是一定的了,实现方式还没有考虑过, 应该有很多方式可以实现的,楼主自己先想想吧!
------解决方案--------------------
用守护进程管理多个子进程,在建立子进程前得到各个子进程的pid,
在守护进程里捕捉子进程发来的退出信号,一旦捕捉到,就发SIGABRT信号给其他子进程,一一将其杀死

/////////另外一个方法

同样要使进程组脱离会话终端的控制,然后某个进程退出时调用 kill(0,SIGKILL);
将SIGKILL信号发给同一进程租内的所有进程。
------解决方案--------------------
基类/子类和父子进程完全没有关系。
基类和子类是面向对象的语言概念,仅仅是一个编程方法,在二进制级别和普通C语言程序没有区别。
父进程/子进程是进程继承关系。子进程被父进程创建,且子进程可以继承父进程的环境变量、系统信号等系统对象
------解决方案--------------------
接着上面的说.

那么有人要说了, 用不用static没有区别吗? 错!

static是为了让父类和子类在继承的时候不复制, 也就是让他们共用一个msqid. 因为创建的进程类型可能是不同的(这对应于不同的子类), 但他们用的是一个消息队列(对应于static).