環境: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
