Linux筆記 程序初識

2021-10-12 12:41:22 字數 1038 閱讀 1943

有這樣一段**,分別在父程序和子程序中返回fork()的返回值,以及當前程序pid和父程序pid

#include

#include

#include

#include

int t;

pid_t pid;

void

print()

intmain()

else

if(pid ==0)

else

return0;

}

列印出來的資訊為

father pid is 3081

getpid is 3080

getppid is 2790

child pid is 0

getpid is 3081

getppid is 1

fork()在建立完子程序後,會有兩次返回,父程序中,fork返回值為子程序號》0。子程序中,fork返回值為0;

getpid()返回當前程序本身的pid。

getppid()返回當前程序的父程序pid。

分析上面列印輸出可以看到:父程序中,fork返回了子程序pid3081,而父程序本身pid為3080,父程序的父程序,pid為2790。子程序中,fork返回了0,而子程序本身的pid為3081,子程序的父程序pid為1

這裡可能會有乙個疑問,子程序的getppid返回值應該為3080,為什麼會是1呢?上網查證後發現,原來是由於父程序提前結束,導致子程序沒了「爹」,變成孤兒程序,所以被inti程序接管,inti程序的程序號即為1.

修改上述**,在父程序結尾增加sleep(1),掛起一秒,即讓子程序先結束,列印資訊如下。

father pid is 3166

getpid is 3165

getppid is 2790

child pid is 0

getpid is 3166

getppid is 3165

這次子程序的getppid就是父程序號了

Linux 初識程序!!!

概念 程式的乙個執行例項。在linux裡面有專門用來描述程序狀態的結構task struct,在系統核心裡面。這個通常被稱為pcb,著這個裡面包含著這個程序的所有資訊。pid 在描述程序的結構體pcb裡面有乙個pid,這個是描述程序id的,通過這個id就可以用來區分父程序和子程序。另外,getpid...

Linux系統 程序概念初識

所有的裝置都是圍繞儲存器工作的 cpu 控制器 運算器 1.cpu不會直接從輸入裝置獲取資料進行處理,而是先把資料放到儲存器中,cpu從儲存器中獲取資料處理。2.cpu不會直接將資料交給輸出裝置進行輸出,而是先把資料報道儲存器中,控制輸出裝置從儲存器中獲取資料輸出 2.1什麼是作業系統?2.2什麼是...

Linux 學習筆記(1) 初識Linux

linux分為核心版本與髮型版本,核心版本由官方 www.kernel.org發布,核心版本說明2 主版本 6 次版本 18 末版本 在使用中,是越穩定越安全的越好,而新版本一般是用於實驗 而發行版本,在核心版本基礎上經過修飾,成為了不同的髮型版本。linux中的開源軟體,使用自由 研究自由 散布及...