關於守護進程和exec函數族

關於守護進程創建的基本步驟我就不詳細描述了,大佬們的文章寫了很多

基本步驟就是

1. 創建子進程  fork

2.父進程退出,子進程創建新會話 setsid()

3.改變進程的工作目錄 chdir()

4.指定文件掩碼 umask()

5.對輸入,輸出,錯誤文件描述符做處理

6.守護進程的主邏輯

7.退出(不是一定要寫的)

然後這裏比較經典的一個練習題目就是,讓守護進程每隔多少秒輸出系統時間到文件中,由於之前做的時候用到了exec函數族去執行一些命令,所以這裏也想到了這個,但是很奇怪,在守護進程的主邏輯中使用了exec函數之後發現,通過ps -aux命令找不到這個進程,而且文件中只有一行,百思不得其解

 

直到我打開了exec的man 文檔,發現上面有這麼一句話

大意就是,exec函數族會用一個新進程替代當前進程,也就是說我們的守護進程在exec執行完之後歇菜了,這個東西之前是知道的,但是還是卡了好久,如果非要使用exec函數族的話,參考上一篇實現shell和管道的文章

 

這個坑大家勿踩

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章