進程控制 .

1、進程調用的頭文件爲<unistd.h>。

2、pid_t getpid() 獲取本進程ID。pid_t getppid()獲取父進程ID。 

3、fork()返回值:

在父進程中,返回新創建的子進程的PID

在子進程中,返回0

出現錯誤,返回負值

4、             

 fork與vfork的區別

fork

vfork

拷貝數據

共享數據

次序不定

先子後父

 

5、exec函數啓動的新程序PID不會改變。

exec函數的參數:

execl要完整路徑

execlp在PATH路徑中查找

execv完整路徑、命令字符串數組

 system(char *)加命令就行,頭文件爲<stdlib.h>

6、 int main()函數return的問題:

        vfork() 後從子進程中返回,如果沒有退出會產生死鎖。必須使用_exit(0)函數來返回。如果使用exit()或者return的時候,會關閉所有的IO,此時如果父進程再進行IO操作,就會出錯。不過我在Demo中也用了exit卻沒有報錯,但是用return卻報錯了,exit是對_exit的封裝,會在退出時候調用do_at_exit()函數,而_exit則直接退出,而不進行善後處理。

 

7、wait(NULL)的返回值爲被等待的進程PID。

發佈了0 篇原創文章 · 獲贊 8 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章