linux 5 程序的相關知識

2021-08-13 19:31:51 字數 2240 閱讀 7718

定義程序:乙個正在執行的程式。

相關函式

特殊的程序

a.僵死程序

i.描述:父程序未結束,子程序結束並且父程序沒有呼叫wait獲取子程序的退出碼(程序主體結束,pcb還存在)

ii.處理方法:

a.程式呼叫signal(sigchld,sig_ign),來忽略sigchld訊號,這樣子程序結束後會由核心釋放資源

b.對子程序的退出捕獲他們的退出訊號sigchld,父退出訊號時,在訊號處理函式中呼叫waitpid()操作來釋放他們的資源。

b.孤兒程序

i.描述:父程序已經結束,而子程序還在繼續。

ii.處理:孤兒程序會由程序號為1的init所收養,並且會為他們完成狀態收集工作

c.守護程序

i.描述:守護程序有稱精靈程序,常常在系統啟動時自啟,僅在系統關閉時才終止,生存期比較長,一般都是在後台執行。

可通過 ps -axj 命令檢視常用系統守護程序,其中最為常見的 init 程序,負責各執行層次間的系統服務。

ii.守護程序程式設計規則

(1)首先呼叫umask(mode_t umask())函式將檔案模式建立遮蔽字設定為0;

(2)呼叫fork(),然後使父程序退出(exit);

(3)呼叫setsid()建立乙個新會話;

(4)將當前目錄更改為 根目錄;

(5)關閉不再需要的檔案描述符;

(6)某些守護程序開啟/dev/null 使其具有檔案描述符0,1,2,這樣任何乙個程序就不會產生其他不好的效果;

訊號

1.概念:訊號是系統響應某些條件而產生的乙個事件,然後程序會相應的採

取一些行動,訊號可以產生,可以被接收。訊號是系統預先定義好

的某些特定的事件。訊號的產生和接收的主體是程序。

2.儲存位置 系統訊號定義:在檔案/usr/include/bits/signum.h 中定義。

3.處理方式

1、預設處理,分以下五種方式

term 終止程序

ign 忽略(層級不同)

stop 暫停

core 先終止程序然後生成core檔案,死後驗屍用於gdb除錯

cont 繼續執行

2、忽略

3、自定義:使用者自定義捕捉函式處理

<1 int kill(pid_t pid, int sig); 傳送訊號

第乙個引數pid 設定給誰傳送訊號

第二個引數sig 設定傳送的訊號型別

怎樣接受訊號:signal 系統呼叫函式(修改訊號的響應方式)

<2 void (*signal(int sig, void ( *func )( int ) ) ) ( int );

注: typedef void ( *sighandler_t )( int );

sighandler_t signal( int signum, sighandler_t handler);

函式解析: sig 指定訊號型別, func 為函式指標,指定訊號處理函式。

設定預設響應方式::signal 函式中的第二個引數設定為 sig_dfl 或者 0;

設定忽略響應方式::signal 函式中的第二個引數設定為 sig_ign 或者 1;

訊號響應的主體是呼叫 signal 函式的程序,傳送訊號的程序僅僅是給了乙個訊號

而已。signal 使用時,第二個引數是函式指標,所以使用時只需要函式名,但在此不

會呼叫此函式。

signal 函式使用**示例:

#include #include #include #include #include #include void fun(int sign)

void main()

}練習題: 編寫**實現鍵盤出入 ctrl+c 程式第一次顯示 hello word ,第二次結束本

kill 函式使用示例:向指定程序傳送訊號

#include #include #include #include #include #include int main(int argc, char *argv)

int id = 0;

sscanf(argv[1], "%d", &id);//使 argv[1]中的內容以%d 的形式輸入到 id 中

if(kill(id, sigint) == -1)

}

5.程序狀態轉移圖

三態圖:

五態圖

linux 5 壓縮打包

系統常見的壓縮檔案案的副檔名 gz gzip程式壓縮的檔案 bz2 bzip2程式壓縮的檔案 xz xz程式壓縮的檔案 zip zip程式壓縮的檔案 z compress程式壓縮的檔案 tar tar程式打包的資料,並沒有壓縮 tar.gz tar程式打包的資料,並經過gzip壓縮 tar.bz2 ...

linux 5 基礎學習

組建立 groupadd groupadd option group name g gid 指明gid號 gid min,gid max r 建立系統組 centos 6 id 500 centos 7 id 1000檢視使用者相關的id資訊 id id option user u uid g gi...

Linux5個重啟命令

一 linux 的五個重啟命令 1 shutdown 2 poweroff 3 init 4 reboot 5 halt 二 五個重啟命令的具體說明 shutdown reboot 在linux下一些常用的關機 重啟命令有shutdown halt reboot 及init,它們都可以達到重啟系統的...