linux下用fork和kill來實現7*24進程

概念:

所謂7*24小時進程,就是說一天要7天每天都24小時不間斷的運行。

問題:

而進程隨着運行時間推進,可能會導致內存不斷增加、佔用文件描述符變多等資源問題。

方案:

所以要實現的就是有一個監控進程,來監控(kill函數第二個參數爲0用來監控)工作進程是否結束。

進階:

而如果是進程開始就fork兩個子進程,子進程1作爲工作進程,子進程2用來作爲監控進程的話,如果工作進程異常結束,那麼可能會有殭屍進程產生,因爲他的父進程存在。

一個進程結束了,但是它的父進程沒有等待(調用wait / waitpid)他, 那麼他將變成一個殭屍進程。 但是如果該進程的父進程已經先結束了,那麼該進程就不會變成殭屍進程。

     所以實現的方式是進程開始fork一個子進程A,在子進程中fork兩個子進程B和C,然後將子進程A用exit退出,在子進程B中進行正常工作,子進程B中用kill監控進程A是否存在,如果進程A不存在的話,用system(“./argv[0] -r”)重啓整個原始進程,然後進程C和A都exit退出。

發佈了28 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章