獲取進程ID數組
#include <sys/types.h> #include <unistd.h> pid_t getpid(void) //獲取本進程ID pid_t getppid(void) //獲取父進程ID
#include<unistd.h> pid_t fork(void) //功能:建立子進程 //fork調用一次,卻返回兩次,有三種不一樣的返回值 //1.父進程中,fork返回新建立的子進程的PID //2.子進程中,fork返回0 //3.若是出現錯誤,fork返回一個負值 //注意:使用此函數建立的子進程,其數據空間、堆棧空間都會 //從父進程獲得一個拷貝,而不是共享
#include <sys/types.h> #include <unistd.h> pid_t vfork(void) //功能:建立子進程
exec函數族函數
exec用被執行的程序替換調用它的程序。命令行
與fork區別:fork建立一個新的進程,產生一個新的PID,exec啓動一個新程序,替換原有的進程,所以進程的PID不會改變。指針
execlcode
#include <unistd.h> int execl(const char *path, const char *arg1,...) //參數說明: //path:被執行的程序名(含完整路徑) //arg1-argn:被執行程序所需的命令行參數,含程序名。以空指針(NULL)結束
#include <unistd.h> int execlp(const char *path, const char *arg1,...) //參數說明: //path:被執行程序名(不含路徑,將從path環境變量中查找該程序) //arg1-argn:被執行程序所需的命令行參數,含程序名。以空指針(NULL)結束
#include <unistd.h> int execv(const char *path, char *const argv[]) //參數說明: //path:被執行程序名(含完整路徑) //argv[]:被執行程序所需的命令行參數數組
#include <stdlib.h> int system(const char *string) //功能: //調用fork產生子進程,由子進程調用/bin/sh -c string來執行參數string所表明的命令
#include <sys/types.h> #include <sys/wait.h> pid_t wait(int *status) //功能:阻塞該進程,直到某個子進程退出