一創建進程:
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);