函數名 | 解釋 |
---|---|
pid_t getpid(void); | 獲取當前進程PID |
pid_t getppid(void); | 獲取父進程PID,若無返回0 |
uid_t getuid(void) | 獲取當前進程user的ID |
uid_t geteuid(void) | 獲取進程有效用戶ID(與系統資源使用有關,涉及權限)(effective user id) |
gid_t getgid(void) | 獲取用戶組ID(group id) |
gid_t getegid(void) | 獲取有效用戶組ID(與上面uid對應) |
pid_t fork() | fork函數,新建一個子進程,與父進程公用代碼段 |
pid_t wait(int *stat_loc) | wait 系統調用會使父進程阻塞直到一個進程結束或者父進程接收到信號,若父進程無子進程則立即返回,成功返回時返回值時子進程PID,否則-1.並設置全局變量errno.stat_loc,時子進程的退出狀態,即子進程exit或return的值(詳細說明查man手冊,而且errno總是沒用) |
pid_t waitpid(pid_t pid,int *stat_loc,int options) | 等待指定子進程直到子進程返回pid爲正,爲等待指定進程。 pid=0,等待當前組ID相同組ID的其他進程。pid=-1,==wait,pid<-1,等待任何一個組ID等於pid絕對值的進程。 options表示父進程的狀態:WNOHANG(wnohang):父進程沒有子進程時立即返回WUNTACHED(wuntached):子進程結束返回時,子進程退出狀態不可得。 |
int execl(const char *path,const char *arg…);//////int execlp(const char *file,const char *arg…) ;///// int execle(const char*path,char *const argv[]);////int execv(const char *path,char *const arg[]);/////int ececvp(const char *file,char *const argv[]) | exec調用保留當前的pid,重新申請進程的數據段,代碼段等進程模塊arg 是所執行的文件的參數,必需以空指針結尾 ,(區別貌似不大,也沒注意過,知道的可以在下面評論 ) |
int kill(pid_t pid,int sig) | 殺死pid的進程pid=0 ,sig信號發給同組所有進程pid=-1,發給所有可以發給的進程。 pid<-1,發給所有用戶組中ID是-pid的進程。 sig=0,什麼也不發生,一般都是宏。 返回值 0 success -1 error 同時errno被被設置 |
常用頭文件有
<unistd.h>
<errno.h>
<sys/wait.h>
<sys/types.h>
基本的進程函數都列舉在這裏了。
編譯時候加-lm連接數學函數庫