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。