Linux程序控制

2021-09-19 09:37:10 字數 2056 閱讀 7276

孤兒程序

產生原因: 父程序先於子程序退出

乙個父程序退出,而它的乙個或多個子程序還在執行,那麼那些子程序將成為孤兒程序。孤兒程序將被init程序(程序號為1)所收養,並由init程序對它們完成狀態收集工作

#include

#include

#include

intmain()

else

if(pid ==0)

else

return0;

}

環境變數

程序退出

程序等待

子程序先於父程序退出,父程序由於處理子程序退出的通知,就會造成殭屍程序, 進而造成資源洩露,所以父程序通過程序等待的方式,**子程序退出後的資源,獲取子程序退出資訊

#include

#include

#include

#include

intmain()

if(pid ==0)

else

else

if(ret >0)

}}

程序的阻塞等待方式

#include

#include

#include

#include

intmain()

else

if(pid ==0)

else

else

}return0;

}

程序等待的非阻塞方式

#include

#include

#include

#include

intmain()

else

if(pid ==0)

else

sleep(1

);}if

(wifexited

(status)

&& ret == pid)

else

}return0;

}

實現minishell

#include

#include

#include

intmain()

;if(scanf

("%[^\n]%*c"

, buf)!=1

)char

*ar**[32]

;int argc =0;

char

*ptr = buf;

while

(*ptr !=

'\0')}

else

} ar**[argc]

=null

;int pid =

fork()

;if(pid <0)

else

if(pid ==0)

wait

(null);

}return0;

}

process_create

#include

#include

#include

#include

typedef

void

(*func)

(void

* arg)

;int

process_create

(pid_t* pid,

void

* func,

void

* arg)

else

if(pids ==0)

elseif(

!wifexited

(status)

&& ret != pids)

}return0;

}void

testfunc

(int a)

intmain()

linux 程序控制

什麼是程序 每乙個程序在系統中都有唯一的id標示它,此id為程序標示符 程序標示符的型別 pit t,其實是乙個無符號整形 乙個程序標示符對應唯一的乙個程序,多個程序標示符可以對應同乙個程式 程序和程式的區別 程式 可執行的二進位制 檔案,這種檔案載入到記憶體中執行就得到了乙個程序 程序 同乙個程式...

Linux程序控制

linux程序控制 獲取pid include include pid t getpdi void 獲取本程序id pdi t getppid vodi 獲取父程序id,及獲取建立子程序的程序id 程序建立 include pid t fork void 建立子程序 呼叫一次返回兩次值 1.父程序中...

linux程序控制

linux程序控制 編寫命令直譯器 一 背景 之前在 計算機作業系統 這本書中已經多次接觸了程序這一概念,而程序在作業系統中具體是做什麼的呢?卻沒有實際的與程序發生過互動,因此也就沒有實際的感受。對於我來說程序僅僅停留在概念的層面上 程序是程式執行時的記憶體空間和設定或者說程序就是程式的進行時。沒有...