創建進程,分析父子進程關係以及結束進程。

一創建進程:

    pid_t fork(void);   pid_t等價與有符號整型失敗-1,成功時父進程返回子進程進程號,子進程0;父子進程 就是fork返回值區分。

   例子:

二.結束進程:

     exit/_exit (int  status) 只有status第八位纔有效。 其中exit結束時會刷新流的緩衝區。。 _exit不會刷新。

三.exec函數族:

     讓當前進程執行另外程序,使父子進程執行不同程序。

  步驟1。父創建子進程 子進程調用exec函數 父進程不受影響

四.當前進程執行其他進程用法

進程創建:

 int execl(char *path,char * arg)  execlp(char *file,char * arg)path執行的程序名稱,包含路徑。arg傳遞給執行的程序的參數列表

system(const char *command);成功返回cimmand子進程,繼續程序。

五。進程回收:

wait 回收任何一個子進程,無法指定。

pid_t wait(int *status);  //回收成功是子進程的進程號,失敗是-1; 子進程沒結束 父進程阻塞。status指定保存子進程返回值和結束方式地址 status =NULL時子進程結束父進程不回收。 返回值和結束方式exit/_exit/return 返回某個值(0-255)    父進程調用wait(&status) WIFEXITED 判斷子進程是不是正常結束。WEXITSTATUS 獲取子進程返回值。

waitpid(pid_t pid,int * status,int option);



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章