linux c 程序學習

2021-08-02 20:16:24 字數 789 閱讀 3930

1.fork

由於fork後的父程序與子程序的優先順序是一樣的,所以會存在父程序已經退出了而子程序還在執行,這時候的子程序就是孤兒程序,會被init程序收養,所以這時候getppid得到的1。

int main()

exit(0);

}

2.vfork

由vfork也是用來建立程序,但是子程序是共享父程序的位址空間,也就是兩者的變數是共享的,而fork是複製的兩者不共享。vfork會保證子程序先執行,當子程序 exec 或者 exit後才可能會被排程,如果未呼叫exec 或者 exit 將出現段錯誤。

int glab_var = 0;

int main()

printf("孩子 var:%d,glab:%d\n",var,glab_var);

exit(0);

break;

case -1:

exit(0);

break;

default:

printf("pid:%d\n",getpid());

printf("cpid:%d\n",pid);

printf("父親 i:%d\n",i);

i=0;

while(i<3)

printf("父親 var:%d,glab:%d\n",var,glab_var);

//wait(null);

exit(0);

break;

}}

Linux C 程序學習的筆記

一 程序的建立 fork vfork 兩個函式都可以進行程序的建立,但是卻稍有不同 fork函式建立的子程序是將父程序的資源拷貝乙份 vfork函式建立的子程序是與父程序共享資料空間,而不是單純的拷貝 此外,在呼叫vfork函式的時候,子程序必須要先退出,父程序才能繼續執行 二 程序的執行 1.ex...

Linux C程序 執行緒

1 程序間通訊 庫 在使用者空間是不可能實現程序通訊,可通過linux核心建立物件來通訊 pid t pid 程序號的型別定義 pid fork 建立程序 if pid 0 子程序 if pid 1 父程序 2 執行緒間通訊 庫 在使用者空間可以實現執行緒間通訊,通過全域性變數通訊 pthread ...

linux c程序監控

我們經常需要實現程序監控,如果某一程序異常退出或是跑飛則立即重啟。通常使用的有2種方法 一.supervisor來管理程序。二.自己寫程式來監管。對於1而言,有些檔案系統中不支援,需要移植安裝。對於2而言,不少都是單獨寫個監管程式,通過寫入檔案pid定時檢查程序pid是否存在,或是檢視是否有此程序名...