實驗環境
vmware workstation pro下linux red hat
核心版本:2.6.32
1.通過vim編寫程式
首先程式需要包含所需要的標頭檔案。sys/types.h資料結構pid_t在此構造、sys/wait.h函式wait在內定義、sys/time.h和sys/resource.h包含getpriority函式定義。值得一提的是:在子程序的最後可以使用_exit(0)來終結程序,該函式包含在標頭檔案unistd.h中,它會呼叫do_exit()來進行清理工作。具體做了什麼工作呢?其中函式getpriority的函式原型定義如下:int getpriority(int witch, int who);
witch有三個可選項:prio_process、prio_pgrp、prio_user分別表示程序、程序組、使用者識別碼。who為程序的pid號
使用fork()函式核心會返回兩個返回值,若返回值為0,表示這是子程序;若返回值非零,表示是父程序,並且返回值是子程序的pid號。通過返回值得不同來區分父程序和子程序。
其實除了使用_exit(0)這種顯式終止以外,系統還可以隱式的終止程序,即在main函式返回的時候去呼叫do_exit()函式。
另外該程式中還存在除了fork(),exit()之外的另乙個系統呼叫,那就是wait()。它的作用將呼叫它的程序掛起(文中是將父程序掛起),然後等待其中乙個程序退出,並返回該退出程序的pid號。
有興趣的話可以試一下pid = wait(null);然後將pid輸出,會發現這個數字和在子程式中呼叫getpid()獲得的數字是一樣的。
2.執行程式驗證結果
程式讓子程序和父程序分別以不同的速度進行數字輸出,可以看出來子程序和父程序是一起執行的。
LINUX程序管理
1.程序是什麼?乙個程序就是出於執行期的程式,包括 可執行程式 段 開啟的檔案,掛起的訊號,核心內部資料,處理器狀態,位址空間,乙個或多個執行執行緒,當然還包括用來存放全域性變數的資料段,等等.2.什麼是執行緒?它和程序的關係是什麼樣的?執行緒在linux中具體是怎麼樣實現的?是在程序中活動的物件,...
linux程序管理
程序的監控 使用ps aux 檢視當前所有程序。可以使用top檢視當前程序自動更新列表,在top中m 按記憶體大小排列,p 按cpu佔用率排列 終止和管理程序 程序之間通過訊號來進行通訊 top和kill都用於向程序傳送訊號。kill l顯示訊號編號表。kill 9 pid kill pid 向pi...
Linux 程序管理
1.linux程序管理工具,包括ps pgrep top kill killall pkill 等 常用 ps aux 或lax輸出的解釋 user 程序的屬主 pid 程序的id ppid 父程序 cpu 程序占用的cpu百分比 mem 占用記憶體的百分比 ni 程序的nice值,數值大,表示較少...