我們先了解乙個概念。
在linux系統中,觸發任何乙個事件時,系統都會將它定義成為乙個程序,並且給予這個程序乙個id,稱為pid,同時依據觸發這個程序的使用者與相關屬性關係,給予這個pid一組有效的許可權設定。
那麼,我們必須了解什麼叫「觸發事件」。
其實就是,執行乙個程式或命令,就可以觸發乙個事件而取得乙個pid。而系統是僅認識二進位制檔案的,當我們要讓系統進行工作時,當然就需要啟動乙個二進位制檔案,這個二進位制檔案就是程式。
程式(program):通常為二進位制程式放置在儲存媒介中,以物理檔案的形式存在。
程序(process):程式被觸發後,執行者的許可權與屬性、程式的程式**與所需資料等都會被載入到記憶體中,作業系統並給予這個記憶體單元乙個識別符號(pid)。
可以說,程序就是乙個正在執行的程式。
二、子程序與父程序
程序彼此之間是有相關性的。
因為每個程序都有乙個pid,它的父程序就通過ppid來判斷。且子程序可以取得父程序的環境變數。
eg:直接執行bash,進入子程式的環境中,用ps -l檢視:
觀察pid與ppid,第乙個bash的pid與第二個bash的ppid是一樣的,因為第二個bash是由第乙個bash產生的。
三、程序互相呼叫的流程:fork and exec
程序都會通過父程序以
複製(fork)的方式產生乙個一模一樣的子程序,然後被複製出來的子程式再以
exec的方式來執行實際要進行的程序,最後就成為乙個子程序的存在。如下:
80 程序管理 什麼是程序
不用時存放在磁碟空間裡。使用時才例項化成記憶體空間裡面才叫程序。即程序可以理解為正在執行的例項化的程式的例項。getpid.c include include include int main root 100ask home book c coding 0113 gcc getpid.c root...
什麼是殭屍程序?
什麼是殭屍程序?在 unix linux 系統中,通過 fork 建立子程序。子程序結束時,他的父程序並沒有等待 呼叫 wait waitpid 他,則他成為乙個殭屍程序。但如果該程序的父程序已經結束了,那麼該程序就不會變成殭屍程序,因為每個程序結束的時候,系統都會掃瞄當前系統中所執行的所有程序,看...
UNIX 什麼是程序
對於乙個程式來說,他的被程式設計師寫好,通過編譯,就會以可執行檔案存放在磁碟了,他的存放格式elf格式,可能是二進位制檔案,也有可能是文字檔案,當使用者要使用程式時,就會通過系統的shell終端去執行命令,所以說程式時個靜態的特性,他是儲存在磁碟上的許多指令的有序集合,沒有執行的概念。而對於程序來說...