fork(創建行程)
pid(行程識別符號):每個行程都有一個非負數表示的唯一的ID,叫做pid,類似身份證,
需要的頭檔案:
#include <unistd.h>
引數原型:pid_t fork(void);
例如:pid_t pid;
pid = fork();
回傳值:如果出錯,則fork()回傳-1
在子行程中,fork()回傳0
在父行程中,fork()回傳正的子行程的PID
fork函式被呼叫一次,但回傳值2次,兩次回傳值的唯一區別是子行程的回傳值是0,而父行程的回傳值則是新子行程的行程pid,
getpid(獲取自身的行程識別符號)
getppid(獲取父行程的行程識別符號)
需要的頭檔案:
#include <sys/types.h>
#include <unistd.h>
引數原型:
pid_t getpid(void);
pid_t getppid(void);
getpid回傳值:目前行程的pid;
getppid回傳值:目前父行程的pid;

子行程退出狀態不被收集,變成僵死狀態(僵尸行程)
行程退出(正常):
1.Main函式呼叫return,
2.行程呼叫exit(),標準c庫,
3.行程呼叫_exit()或者_EXIT(),屬于系統呼叫,
退出例子:exit(0);
wait(等待子行程結束和中斷)
需要的頭檔案:
#include <sys/types.h>
#include <sys/wait.h>
引數原型:pid_t wait(int *status);
例如:wait(&status);
回傳值:成功執行回傳子行程的pid;
失敗則回傳-1
exit的status收集:
exit(0);
i = WEXITSTATUS(status);
printf(“i”);
可得 i=0

vfork(創建新的行程)
1.vfork直接使用父行程存盤空間,不拷貝
2.vfork保證子行程先運行,當子行程呼叫exit退出后,父行程才能執行,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/237993.html
標籤:其他
上一篇:QGC地面站原始碼BUG——添加測繪后1號航點序號丟失的問題
下一篇:Shell回圈陳述句與函式
