關於守護進程創建的基本步驟我就不詳細描述了,大佬們的文章寫了很多
基本步驟就是
1. 創建子進程 fork
2.父進程退出,子進程創建新會話 setsid()
3.改變進程的工作目錄 chdir()
4.指定文件掩碼 umask()
5.對輸入,輸出,錯誤文件描述符做處理
6.守護進程的主邏輯
7.退出(不是一定要寫的)
然後這裏比較經典的一個練習題目就是,讓守護進程每隔多少秒輸出系統時間到文件中,由於之前做的時候用到了exec函數族去執行一些命令,所以這裏也想到了這個,但是很奇怪,在守護進程的主邏輯中使用了exec函數之後發現,通過ps -aux命令找不到這個進程,而且文件中只有一行,百思不得其解
直到我打開了exec的man 文檔,發現上面有這麼一句話
大意就是,exec函數族會用一個新進程替代當前進程,也就是說我們的守護進程在exec執行完之後歇菜了,這個東西之前是知道的,但是還是卡了好久,如果非要使用exec函數族的話,參考上一篇實現shell和管道的文章
這個坑大家勿踩