避免linux系統呼叫fork後產生僵死程序

2021-06-08 17:21:46 字數 532 閱讀 5096

殭屍程序 就是 已經結束,但是還沒有清理出去的.用kill -9 $pid 也無法殺死.

所以程式中應該避免出現殭屍程序.

用fork之後,父程序如果沒有wait /waitpid 等待子程序的話,子程序完畢後,就成了殭屍程序.

但是父程序如果等待wait/waitpid的話,就沒法幹別的事情了...尤其在多個子程序的情況下.所以 中斷 訊號量 是乙個好辦法:

#include

#include

#include

#include

#include

void sig_child()

//key !!!!!!!!  wait or waitpid

return;

}voidnodefunct_sig()else

printf("parent: waitting child...pgid=%d\n\n",getpgid(getpid()));

//waitpid(child,&status,

}}void main()

系統呼叫fork

fork的基本內容 fork是依次呼叫兩次返回,分別返回在父程序和子程序中 1 在父程序中,fork返回新建立子程序的程序id 2 在子程序中,fork返回0 3 如果出現錯誤,fork則返回乙個負值 例子 void fork0 else 在這段 中,fork 被執行後將建立與父程序相同的子程序,並...

Linux中fork 系統呼叫函式

什麼是fork 呼叫fork 發生了什麼 子程序建立後,系統會給子程序分配資源,然後把原來的程序的所有值都複製到新的子程序中,只有少數值與原來的程序的值不同 其實就是父程序的乙份副本。但是子程序和父程序駐留在不同的記憶體空間上。這些記憶體空間具有相同的內容,並且乙個程序執行的任何操作都不會影響其他程...

Linux 核心學習 系統呼叫(fork)

昨天花了一天的時間在看linux0.11的核心,當看到main.c中的int 函式的時候被乙個系統呼叫難倒了 其實筆者的c,彙編等基礎並不是很厲害。但是處於某些原因,就入了這個核心的坑,被澆冷水是經常的事情 於是各種資料各種搜尋,但是大家給出的資料都是千篇一律,不是一開始就介紹什麼是系統呼叫,就是沒...