一、程序相關概述
1、相關指令
ps -aux 檢視所有程序
ps -aux|grep 程序 只會過濾出指定程序資訊
top 指令類似windows任務管理器
2、程序描述符 pid
pid = 0 稱為交換程序 --程序排程
pid =1 init程序 --系統初始化
二、c程式的儲存空間是如何分配的
從高位址到低位址 按如下順序
命令列引數和環境變數:int main(int argc,char**ar**)
棧空間:自定義的函式和其中區域性變數
堆空間: malloc和calloc
未初始化的資料:bss段 int a[128];
初始化的資料 :資料段 int a =10;
正文 :**段
三、fork函式的使用
getpid() 獲得當前程序的pid
getppid()獲得父程序的pid
#include
#include
intmain()
printf
("pid is %d\n"
,getpid()
);//父子程序都會跑
if(pid1==0)
//子程序
if(pid1>0)
//父程序
return0;
}
四、vfork函式的使用
與fork函式的區別
1、直接使用父程序的儲存空間,不拷貝
2、vfork保證子程序先執行,子程序呼叫exit後,父程序才執行
驗證demo
#include
#include
#include
#include
int cnt =0;
intmain()
}}else
if(pid >0)
}return0;
}
五、wait函式
作用:用於等待子程序的退出,**子程序退出時的狀態,子程序狀態不被**就會變成殭屍(zombie)程序(僵死程序)
檢查wait 所返回的終止狀態的巨集:
wifexited(status) 正常終止子程序產生的狀態 對於這種情況可使用wextstatus(status)
wifsignaled(status) 異常終止子程序返回的狀態 對於這種情況可使用wtermsig(status)
wifstoppeded(status) 當前暫停子程序返回的狀態 對於這種情況可使用wstopsig(status)
wifcontinued(status)
demo驗證
#include
#include
#include
#include
int cnt =0;
intmain()
}}else
if(pid >0)
}return0;
}
waitpid 與 wait 的區別
pid_t waitpid(pid_t pid, int *status, int options);
options 引數會影響 父程序是否阻塞來等待子程序## 標題
六、孤兒程序
父程序如果不等待子程序的退出,在子程序之前就結束了自己的生命,此時子程序就叫做孤兒程序
linux 避免存在過多孤兒程序,init程序收留孤兒程序,變成孤兒程序的父程序
Linux系統程式設計之程序
程序狀態 4 5種 就緒 初始化 執行,掛起 等待 停止 pbc成員 1 程序id 2 程序狀態 3 程序切換需要儲存和恢復的cpu暫存器 4 描述虛擬位址空間資訊 5 描述控制終端的資訊 6 當前工作目錄 7 umask掩碼 8 檔案描述符 9 訊號相關的資訊 10 使用者和使用者組id 11 會...
Linux 系統程式設計 之 程序 Process
知識點 1.python 跨平台 因此使用process類 而不使用 fork 2.程序建立格式 p process target p1,args process1 target 為函式名 args 為函式引數 3.p.start 建立子程序 p.join 1 主程序等待子程序 1s p.termi...
系統程式設計之檔案系統程式設計
系統呼叫 所有的作業系統都提供多種服務的入口點,程式由此向核心請求服務。這些可直接進入核心的入口點被稱為系統呼叫。不同作業系統提供了自己的一套系統呼叫,所以系統呼叫無法實現跨平台使用。而且頻繁地系統呼叫,在使用者態和核心態之間切換,很耗費資源,效率不高。c標準庫提供了操作檔案的標準i o函式庫,與系...