Linux中的程序和進程,PID和PPID


環境:Vmware Workstation;CentOS-6.4-x86_64

程序和進程:

1、程序:程序是靜止的,程序就是磁盤上的一個文件。

2、進程:進程是一個正在執行的程序的實例。

3、進程是動態的。

4、一旦程序被操作系統加載進內存了,那么這程序就成為了進程。

PID和PPID:

1、PID(process ID):

PID是程序被操作系統加載到內存成為進程后動態分配的資源。

每次程序執行的時候,操作系統都會重新加載,PID在每次加載的時候都是不同的。

2、PPID(parent process ID):PPID是程序的父進程號。

3、PID和PPID都是非零的整數。

4、PID是唯一的,一個PID只標識一個進程。

5、一個進程創建的另一個新進程稱為子進程。相反地,創建子進程的進程稱為父進程。

6、對於一個普通的用戶進程,它的父進程就是執行它的哪個Shell,對於Linux而言,Shell就是bash。

7、bash所在的目錄:[negivup@localhost bin]$ cd /bin | ls bash

特別說明:

1、所有進程追溯其祖先最終都會落到進程號為1的進程身上,這個進程叫init進程

2、init進程是linux內核啟動后第一個執行的進程。

3、init引導系統,啟動守護進程並且運行必要的程序。

獲取PID和PPID的函數:

1、得到進程的PID:pid_t getpid(void);

2、得到進程的PPID:pid_t getppid(void);

通過程序獲取當前程序的PID和PPID:

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main(int argc, char *args[])
{
	// 獲取當前進程的PID
	pid_t pid = getpid();
	printf("pid = %d\n", pid);
	
	// 獲取當前進程的PPID
	pid_t ppid = getppid();
	printf("ppid = %d\n", ppid);
	
	return 0;
}

 文章來源:http://blog.csdn.net/sinat_25457161/article/details/48596797


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM