編寫linux守護程序時,使子程序成為守護程序,父程序退出,我按下ctrl c為什麼對守護程序,沒有作用了呢?

時間 2021-06-07 11:36:06

1樓:js li

成為守護程序那一刻就已經和當前的控制終端脫離關係了,所以不管理ctrl+c還是終端退出都影響不到它了。它既然已經不屬於終端了,自然也不是終端的前後臺程序組的成員。

2樓:徐漢彬

ctrl + C相當於是終端產生的訊號,將訊號傳遞給了對應的程序,對於程序而言,通常收到乙個訊號,預設動作是退出。

但是,程序是可以選擇:

(1)忽略訊號,不做任何行為。

函式:int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oset)

(2)捕獲訊號,根據捕獲訊號執行某些處理。

函式:signal(SIGUSR1, function_name)。

例如vi命令中,你的ctrl+C就是不會終止程序的,因為vi程序對ctrl+C產生的訊號進行了捕獲處理。

守護程序的特徵就是:長期存在,沒有終端(TTY裝置號是?),後台執行。

所以,你終端退出了與它也沒有什麼關係哈。

Linux 多程序共享記憶體資料?

Xi Yang 這麼複雜的配置體系,起個MongoDB專門管這事怎麼樣?鑑於你已經有一坨XML體系了,那不妨弄個指令碼程序,專門負責讀取XML並且設定MongoDB的庫內容。資料庫我不是很熟悉。如果MongoDB太重,那就找個更輕量的非關聯式資料庫。 大寬寬 簡單搞的話,用mmap做一下呢?就是每個...

Linux排程器何時判斷程序的timeslice用完?

Suede Young 排程器分為週期性排程器和主排程器。週期性排程器由週期性時鐘中斷觸發,負責對run queue中的各個程序計算時間 其實是負荷權重吧 run queue是由rbtree排列的,優先順序最高的排在樹的左下節點,等待執行schedule 也就是主排程器 時被呼叫。觸發schedul...

Linux程序間如何傳遞檔案描述符?

Tools boy 每個程序的檔案描述符都是唯一的 檔案描述符是file struct結構中的file 開啟檔案建立的物件 指標陣列的索引,file物件只有開啟檔案時才會建立並與檔案描述符相關聯fd install fd,f 程序間傳遞檔案描述符除了父子程序外,沒啥意義.父子程序之間會將file s...