定義程序:乙個正在執行的程式。
相關函式
特殊的程序
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,它們都可以達到重啟系統的...