防止殭屍程序的方法

2021-05-24 15:30:46 字數 401 閱讀 9091

1.每次執行fork()前利用waitpid檢視是否有子程序需要處理

2.呼叫signal(sigchld,fun)註冊訊號處理函式,在函式裡呼叫waitpid()

void fun(int)

3.利用 sigaction 結構體

struct sigaction act,oldset;//設定訊號性質的結構體

sigemptyset(&act.sa_mask);//清空遮蔽位

act.sa_handler = null;//函式處理函式為空

act.sa_flags = sa_nocldwait | sa_nocldstop;//不接收子程序的訊號,並且不讓子程序為殭屍程序

sigaction(sigchld,&act,&oldset);//設定sigchld訊號。

防止殭屍程序的產生

apue的 直接貼這裡。這段 採用了兩次fork,來避免產生殭屍程序。當乙個程序的父程序先退出,該程序就由init程序接管。init程序就成為了該程序的父程序 該程序退出時,有init來清理。所以該程序就不會成為殭屍程序了。include include include include intmai...

如何防止出現殭屍程序

include include int main else if pid 0 上述程式中,fork了乙個子程序,並且子程序很快就退出。父程序持續進行sleep,這樣子程序就變成了殭屍程序。利用ps命令可以清晰的看到這一點。leconte localhost ps axu greptest lecon...

防止殭屍程序的fork程式設計

基本概念 孤兒程序與殭屍程序 原理就是捕獲sigchld訊號,通過waitpid函式處理子程序退出,直接上 gcc fork one.c include include include include include include void sig chld int signo int main ...