struct task_struct
define task_running 0 執行狀態
define task_interruptible 1 可中斷睡眠狀態
define task_uninterruptible 2 不可中斷睡眠狀態(應用層不存在)
define task_stopped 4 停止狀態
define task_zombie 8 僵死狀態
task_running : 執行狀態
define task_interruptible: 可中斷睡眠狀態 (比如說 read ,accept等阻塞狀態不浪費系統cpu資源,會被訊號所打斷)
task_uninterruptible: 不可中斷睡眠狀態(應用層不存在)
task_stopped: 停止狀態
task_zombie: 僵死狀態
程序號pid_t getpid(void); //獲取當前程序的pid
#include
#include
intmain
(int argc,
char
*ar**)
pid_t getppid(void); //獲取當前父程序的pid
#include
#include
intmain
(int argc,
char
*ar**)
getpgid(); //獲取當前程序的組的pid
#include
#include
intmain
(int argc,
char
*ar**)
使用者號
pid_t getpgid(pid_t pid); //獲取程序組id
int setuid(uid_t uid); //臨時將該程序設定為檔案擁有許可權
#include
#include
#include
intmain()
會話號
pid_t getsid(pid_t pid); //獲取當前程序的會話號
setsid(void); //設定當前程序的會話號
控制終端
乙個會話可以有乙個控制終端,控制程序就是開啟終端的程序終端傳送的訊號,只有前台程序組的程序會收到,後台不處理
程序建立
pid_t fork
(void
);
返回值 >0 : 父程序
返回值 =0 :子程序
返回值小於0 : 建立程序出錯
linux 程序與程序環境
程序與程序環境 程序是執行中的程式,每個程序都執行在各自的虛擬位址空間中,某個程序的崩潰不會影響其它程序的執行。程序間的通訊 ipc 要通過系統核心 系統呼叫 來實現。程序分類 在linux系統中,根據程序的特點,程序可分為3大類 互動程序 批處理程序和守護程序。l 互動程序 由shell啟動的程序...
Linux 殭屍程序與孤兒程序
之前的部落格有講過儲存程序資訊的乙個重要的資料結構,task struct結構體,其中,state表示程序可能出現的狀態。如下 static const char const task state array 我們對個別狀態進行解釋如下 s sleeping 淺度睡眠,也是不可中斷睡眠。d disk...
Linux 殭屍程序與孤兒程序
產生原因 子程序先於父程序退出,他要保留退出原因在pcb中,因此退出後不會自動釋放所有資源,子程序退出後作業系統會通知父程序,子程序退出了,去獲取一下原因,然後完全釋放子程序資源,假如父程序不管子程序的退出狀態,那麼這個子程序將進入僵死狀態,成為殭屍程序 實現殭屍程序 該程式為20秒的殭屍程序,在第...