程序防殺 雙程序守護

2021-07-04 14:17:31 字數 1023 閱讀 5233

程序a為主程序,程序b為守護程序,例如:通過乙個事件event,判斷程序a是否存在,若存在,無動作,若不存在,則啟動程序a;

b—>啟動臨時程序—>啟動程序a;臨時程序的作用是防止通過

程序樹把兩個程序同時殺死。

雙程序守護的思想:

假設我想保護a程序,不想被別人結束掉。比如通過程序管理器等方式。

那麼就建立乙個後台監視程序b,判斷a程序是否還存在,如果被殺死,那就重新建立乙個a程序。

當然,你也許會說,我可以把b先結束掉,在殺死a。所以a程序也需要監視b程序,發現b被殺死,就建立乙個b。

所以雙程序守護的兩個關鍵就出現了,

(1)程序持續執行(因為需要監視,所以,要一直執行。)

(2)如何實現程序間的相互監視!

第一點比較容易實現,只要建立乙個死迴圈就好,注意迴圈中加入sleep(n)很重要,減少資源占用。

第二點比較麻煩,乙個程序被殺死,另乙個程序必須馬上直到他被殺,然後才可以啟動它。其實就是程序間的通訊,這個有好多方法實現。

我們採用建立事件event的方式來達到目的。

a程序啟動的時候createevent(null, null, false, text("event1"));

b程序啟動的時候createevent(null, null, false, text("event2"));

在a程序中的死迴圈(while(true))中,加入檢測**

while (true)

else

sleep(100); }

程序b建立了event2,在程序a中調

用openevent,若開啟成功,返回控制代碼,則證明程序b存在,因為程序b被殺死後,event2會被刪除,導致open失敗。

程序b中也加入相似**,以此達到雙程序守護的目的。

但是一般這個方式可以通過結束程序樹的方式結束程式,可能因為是父子程序的關係。

所以我們建立臨時程序,使這兩個程序脫離父子程序的關係。

如a建立tema,tema建立b,然後tema任務完成,自動結束。

b建立a時同理。

程序保活之雙程序守護

declare any non default types here with import statements inte ce iserviceaidlinte ce二 建立本地localservice public class localservice extends service loca...

守護程序及守護程序輸出

1 建立乙個輸出程式 2 建立乙個守護程序 1 建立乙個輸出程式 守護程序不與終端聯絡,所以,需要另外建立乙個程式用於輸出。也可以直接使用 bin echo example daemon help.cc include int main int argc,char argv else if argc...

守護程序及守護程序輸出

1 建立乙個輸出程式 2 建立乙個守護程序 1 建立乙個輸出程式 守護程序不與終端聯絡,所以,需要另外建立乙個程式用於輸出。也可以直接使用 bin echo example daemon help.cc include int main int argc,char ar else if argc 2...