4進程原語:fork()函數,getpid()函數和getppid()函數,getuid()函數,getgid()函數,vfork(),getpidgetppid

來源:互聯網
上載者:User

4進程原語:fork()函數,getpid()函數和getppid()函數,getuid()函數,getgid()函數,vfork(),getpidgetppid


1fork()函數

子進程複製父進程的0到3g空間和父進程核心中的PCB,但id號不同。fork調用一次返回兩次,有以下特點:

A:父進程中返回子進程ID

B:子進程中返回0

C:讀時共用,寫時複製

2fork()依賴的標頭檔

#include <unistd.h>

3fork()函數說明:

pid_tfork(void);                           

通過該函數建立一個子進程

4案例說明:

總結:

A因為讀時共用和寫時複製,子進程會複製父進程的代碼,但是從fork下開始執行。但是,當在fork前定義父子進程都用到的變數的時候,這時候父子進程並不是同時操作這個變數,而是相互獨立的,也就是說:子進程指定自己的n,不會在父進程的n的基礎上操作。

5.getpid/getppid

A依賴的標頭檔

#include <unistd.h>

#include<sys/types.h>

B函式宣告

uid_t getuid(void);  //返回實際使用者ID

uid_t geteuid(void); //返回有效使用者ID

C:案例說明

6.getuid()函數

A依賴的標頭檔

#include <unistd.h>

#include <sys/types.h>

B函式宣告

uid_t getuid(void);   //獲得使用者id

uid_t geteuid(void);  //獲得有效使用者id

函數說明:

通過getuid()函數和geteuid()函數獲得使用者的id

案例說明:

運行結果:

7.getgid()函數

A:依賴的標頭檔

#include <unistd.h>

#include <sys/types.h>

B函式宣告

gid_t getgid(void);

gid_t getegid(void);

函數說明:

通過這個函數實現獲得組的id

C案例說明:

運行結果:

 

vfork

  用於fork後馬上調用exec函數

  父子進程,公用同一地址空間,子進程如果沒有馬上exec而是修改了父進程得到的變數值,此修改會在父進程中生效

  設計初衷,提高系統效率,減少不必要的開銷

  現在fork已經具備讀時共用寫時複製機制,vfork逐漸廢棄。

 

 

 

 

 

 

 

 


linux下建立進程的問題,fork函數與getpid函數使用,程式運行結果與預期不同、

getppid 和 getpid 都是一個函數。

函數調用是要加括弧的 getppid()

printf("im a child process,parent PID num is %d\n",(int)getppid);
返回的只是getppid這個函數的記憶體位址。

printf("im a child process,parent PID num is %d\n",(int)getppid());
才能返回ppid
 
getpid()與getppid()在父進程中可以運行

可以,getpid()得到本身進程id,getppid()得到父進程進程id,如果已經是父進程,得到系統進程id,如bash環境運行得到bash的id
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.