mysql-proxy原始碼中,使用了一種程序保活的方法。這種方法的基本原理是:當父程序完成基本的初始化後,建立子程序,由子程序繼續後面的主體邏輯。而父程序wait子程序的退出狀態。一旦發現子程序是由於收到訊號而退出的,則重啟子程序。
這種方法的實現**如下:
#include #include #include #include #include #include #include #include static void signal_forward(int sig)
/** * keep the ourself alive
* * if we or the child gets a sigterm, we quit too
* on everything else we restart it
*/int chassis_unix_proc_keepalive()
else if (pid < 0)
else
}if (child_pid != -1)
else if (wifsignaled(exit_status))
else if (wifstopped(exit_status))
else
}else if (-1 == exit_pid)
} else }}
}int main()
else if (ret < 0)
else
for(;;)
}
這裡的主體邏輯,就是每隔10秒列印一次」 hello,world」。程式執行結果如下:
[father]: we try to keep pid=1824 alive
[father]: waiting for 1824
we are the child: 1824
hello, world
hello, world
...(向子程序傳送sigkill訊號)
[father]: 1824 returned: 1824
[father]: pid=1824 died on signal=9 (it used 0 kbytes max) ... waiting 1min before restart
[father]: we try to keep pid=1853 alive
[father]: waiting for 1853
we are the child: 1853
hello, world
hello, world
hello, world
...(向父程序傳送sigint訊號)
[father]: 1853 returned: 1853
[father]: pid=1853 died on signal=2 (it used 0 kbytes max) ... waiting 1min before restart
[father]: we try to keep pid=1870 alive
[father]: waiting for 1870
we are the child: 1870
hello, world
hello, world
hello, world
hello, world
...
程序保活方法
mysql proxy原始碼中,使用了一種程序保活的方法。這種方法的基本原理是 當父程序完成基本的初始化後,建立子程序,由子程序繼續後面的主體邏輯。而父程序wait子程序的退出狀態。一旦發現子程序是由於收到訊號而退出的,則重啟子程序。這種方法的實現 如下 include include includ...
Android程序保活
2個方法 1.不讓殺 2.殺了復活 程序優先順序 1.前台程序 resume 2.可見程序 pause 4.後台程序 5.空程序 不被殺提公升優先順序1.前台服務 啟用2個前台服務,消除通知 變成可見程序 2.廣播監聽鎖屏解鎖,啟動1畫素活動 儘量減少記憶體占用,在相同oom adj的情況下,也更加...
Android程序保活
對於程式被殺死,一般我們能做到兩個方面優化 保證程序的優先順序 當程序被殺死之後的喚醒 程序的優先順序 程序根據優先順序區分可以分為 前台程序 可見程序 服務程序 後台程序 空程序 程序中有個較為具體的值oom adj,其數值越小對應的優先順序越高 紅色部分是易於被 的 4 16 綠色部分是不易被 ...