linux getpid 小結

來源:互聯網
上載者:User

copy from:  http://blog.sina.com.cn/s/blog_759dc36b0100p8y4.html

當運行任何一個UNIX命令時,shell至少會建立一個進程來運行這個命令,所以可以把任何在UNIX系統中啟動並執行程式叫做進程;但是進程並不是程式,進程是動態,而程式是靜態,並且多個進程可以並發的調用同一個程式。
  
  系統中每一個進程都包含一個task_struct資料結構,所有指向這些資料結構的指標組成一個進程向量數組,系統預設的進程向量資料大小是512,表示系統中可同時容納512個進程。進程的task_struct資料結構包括了進程的狀態、調度資訊、進程標識符等資訊。
  
  由於UNIX系統是一個多進程的作業系統,所以每一個進程都是獨立的,都有自己的許可權及任務,所以當某一進程失敗時並不會導致別的進程失敗。系統通過進程標識符來區分不同的進程,進程標識符是一個非負正數,他在任何時刻都是唯一的,當某個進程結束時,他的進程標識符可以分配給另外一個新進程。系統將標識符 0分配給調度進程,標識符1分配給初始化進程。
  
   進程在運行期間,會用到很多資源,包括最寶貴的CPU資源,當某一個進程佔用CPU資源時,別的進程必須等待正在啟動並執行進程空閑CPU後才能運行,由於存在很多進程在等待,所以核心通過調度演算法來決定將CPU分配給哪個進程。
  
   系統在剛剛啟動時,運行於核心方式,這時候只有一個初始化進程在運行,他首先做系統的初始化,然後執行初始化程式(一般是/sbin/init)。初始化進程是系統的第一個進程,以後所有的進程都是初始化進程的子進程。

 2. 進程標識符管理
  
  UNIX系統使用進程標識符來管理當前系統中的進程。為對具有某類似特性的進程統一管理,系統又引入了進程組的概念,以群組識別碼來區別進程是否同組。進程的群組識別碼是從父進程繼承下來的,所以,通常進程的群組識別碼就是和它相關聯的註冊進程的標識符。進程的標識符是由系統為之分配的,不能被修改;群組識別碼可通過setpgrp系統調用修改。
  
  相關係統調用的格式如下:
  
  #include <sys/types.h>
  #include <unistd.h>
  pid_t getpid(void);
  pid_t getpgrp(void);
  pid_t getppid(void);
  pid_t getpgid(pid_t pid);
  
  說明:前三個系統調用分別返回調用進程的進程標識符、進程群組識別碼和其父進程標識符。它們總能成功地返回。第四個調用置進程群組識別碼,它將調用進程的進程群組識別碼改為調用進程的進程標識符,使其成為進程組首進程,並返回這一新的進程群組識別碼。
  
  下面我們來看一個執行個體:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main(void)
{
    printf( "PID
= %dn", getpid() );
    printf( "PPID
= %dn", getppid() );
    return 0;
}

[root@localhost src]# gcc getpid.c
[root@localhost src]# ./a.out
PID = 4408
PPID = 3128
[root@localhost src]#

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.