#include
#include
pid_t getpid(void) //獲取本程序id
pid_t getppid(void) //獲取父程序id
獲取id
#include
#include
#include
int main(void)
程序建立-fork
#include
pid_t fork(void) //建立子程序
fork()呼叫一次,返回2次值
1,在父程序中,fork()返回新建立的子程序pid
2,在子程序中,fork()返回0
3,如果出現錯去,fork()返回負值
程序建立fork(),子程序資料,堆疊從父程序得到拷貝,而不是共享
**共享。
#include
#include
int main(void)
程序建立-vfork
#include
#include
pid_t vfork(void) //建立子程序
區別:fork(),子程序拷貝父程序資料
vfork(),子程序與父程序共享資料段
fork(), 父子程序執行順序不確定
vfork(),子程序先執行,父程序後執行
exec函式族
exec用被執行的的程式替換呼叫它的程式
區別:fork/vfork建立新程序,產生乙個新的pid
exec啟動新程式,替換原有程序,pid不變
#include
int execl(const char *path,const char *arg1,...)
引數path:被執行的程式名(含完整路徑)
arg1~argn:被執行程式所需要的命令列引數,含程式名,以空指標結束
#include
int main(void)
#include
int execlp(const char *path,const char *arg1,...)
引數path:被執行的程式名(不含路徑,從path環境變數中查詢程式)
arg1~argn:被執行程式所需要的命令列引數,含程式名
#include
int main(void)
#include
int execv(const char *path,char * const argv)
引數path:被執行的程式名(含完整路徑)
argv:被執行程式所需要的命令列引數組
#include
int main(void)
;execv("/bin/ls",argv);
return 0;
}#include
int system(const char * string)
功能:呼叫fork()產生子程序,由子程序呼叫/bin/sh -c string執行引數string代表的命令
#include
int main(void)
程序等待
#include
#include
pid_t wait(int *status) //阻塞該程序,直到某個子程序退出,返回子程序pid
#include
#include
#include
#include
#include
int main(void)
else if(pc < 0)
puts("error in fork");
else
return exit_success;
}
linux 程序控制
什麼是程序 每乙個程序在系統中都有唯一的id標示它,此id為程序標示符 程序標示符的型別 pit t,其實是乙個無符號整形 乙個程序標示符對應唯一的乙個程序,多個程序標示符可以對應同乙個程式 程序和程式的區別 程式 可執行的二進位制 檔案,這種檔案載入到記憶體中執行就得到了乙個程序 程序 同乙個程式...
Linux程序控制
linux程序控制 獲取pid include include pid t getpdi void 獲取本程序id pdi t getppid vodi 獲取父程序id,及獲取建立子程序的程序id 程序建立 include pid t fork void 建立子程序 呼叫一次返回兩次值 1.父程序中...
linux程序控制
linux程序控制 編寫命令直譯器 一 背景 之前在 計算機作業系統 這本書中已經多次接觸了程序這一概念,而程序在作業系統中具體是做什麼的呢?卻沒有實際的與程序發生過互動,因此也就沒有實際的感受。對於我來說程序僅僅停留在概念的層面上 程序是程式執行時的記憶體空間和設定或者說程序就是程式的進行時。沒有...