4
int main(void)
12 printf("after:pid is %d\n",getpid());
13 sleep(1);
14return
0;**執行結果**
$ ./a.out
before :pid is
25710
//程序id
after:pid is
25710
//父程序id
after:pid is
25711
//子程序id
//建立子程序成功之後,等待10秒後退出
18if(pid==0)
22else
32//若異常退出,返回了-1,
33else
if(ret<0)
36 }
**執行結果**
./a.out
child exit code:10
// 子程序正常退出
pid_t waitpid(pid_t pid, int *status, int options);
//options有兩種取值,取0時為阻塞,wnohang 時為非阻塞
//wnohang 表示如果沒有已經退出的子程序需要收集,返回0;若正常結束,則返回子程序pid
1
#include
2#include
3#include
4#include
5#include
6char *argv[8] //最多8個字元,儲存命令列引數
7int argc=0; //命令列引數個數
8//例如ps -ef 命令列引數個數為2,引數分別為 ps 和-ef910
//解析命令列,從buf 中判斷哪些顯示在命令列上,哪些不顯示
11void parse(char *buf)
12 22else
if(isspace(buf[i]))//若遇到空格,則不讀
23
27 }
28 argv[i]=null;//已經讀完
29 }
31//程式替換
32void execute(void)
33 51 }
程序控制 程序建立 程序終止 程序等待 程式替換
程序建立 fork vfork vfork 的子程序不能在main函式中return退出 fork 和 vfork clone 同樣可以建立程序或者執行緒,它的引數更多,功能更強大 在核心中都是呼叫 do fork 實現程序的建立,只是引數不同 fork 要建立 pcb,虛擬位址空間,頁表 程序終止...
程序建立,終止,等待
今天我們來說一說程序的建立,終止,等待。1 程序的建立 建立乙個程序我們用到的函式是fork函式,它從已存在的程序中建立乙個新的程序,新程序為子程序,而原程序為父程序。fork函式 include pid t fork void 子程序返回0,父程序返回子程序的id,出錯返回 1。值得注意的是,父程...
Linux 程序的建立 等待與終止
使用fork函式來建立程序,它可以從已存在的程序中建立乙個新程序,新程序為子程序,原程序為父程序。程序呼叫fork,當控制轉移到核心中的fork 後,核心 程序建立的 執行結果 可以從結果看出新產生了乙個pid為4060的程序,這個程序就是子程序,pid為4059的程序是父程序,在子程序也進入到程序...