Linux程序與task struct詳解

2021-10-08 12:31:02 字數 1447 閱讀 6090

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秒的殭屍程序,在第...