进程在创建时,创建进程是新进程的父进程,新进程是创建进程的子进程。在Linux中,每个进程在创建时都有一个父进程。最开始的进程称为初始进程(init process),初始进程是系统启动时创建的第一个进程,负责启动和管理其他进程,在大多数Linux系统中,这个进程的PID为1。
父进程的查看可以通过ps -f的命令,查看到的PPID列就是子进程对应的父进程的PID。或者也可以使用pstree -p命令,以树状结构显示 Linux 系统中的进程关系,将父进程和子进程的层次结构清晰地展示出来。
示例:执行ps -f命令
| UID PID PPID C STIME TTY TIME CMD
ubuntu 373 372 0 15:33 pts/0 00:00:00 -bash ubuntu 6458 373 0 15:58 pts/0 00:00:00 ps -f |
ps -f进程的PID:6458,PPID也就是父进程-bash的PID:373;
在应用程序创建的子进程中,可以通过getppid()函数获取到父进程的PID。
1.头文件
#include <unistd.h>
2.函数原型
pid_t getppid(void);
3.参数
无。
4.返回值
返回当前进程的父进程的PID,类型为pid_t。
5.示例:(通过getppid()函数查看父进程ID)
| #include <stdio.h>
#include <unistd.h> int main(void){ pid_t pid; pid_t ppid; pid = getpid(); printf("The pid of the process is: %d\n", pid); ppid = getppid(); printf("The pid of the parent process is: %d\n", ppid); } |
6.运行结果
| The pid of the process is: 6475
The pid of the parent process is: 373 |
7.代码解析
pid_t pid定义一个变量pid,用于存储当前进程的进程ID。pid_t ppid;定义一个变量ppid,用于存储父进程的进程ID。调用getpid()函数,获取当前进程的PID,并将其存储在变量pid中,随后打印当前进程的PID到标准输出。调用getppid()函数,获取当前进程的父进程ID,并将其存储在变量ppid中,随后打印当前进程的父进程的PID到标准输出。
252