1.获取进程ID
每个进程都有一个唯一的非零进程PID,下面是得到这个PID的函数原型及相关头文件:
#include<sys/types.h>//pid_t定义在这个头文件中
#include<unistd.h> //意为unix std,是POSIX标准定义的,包含许多系统服务的函数原型
pid_t getpid(void);//返回调用进程的PID
pid_t getppid(void);//返回父进程的PID
//pid_t 在types.h中被定义为int
使用示例:
//a.c
#include<sys/types.h>
#include<unistd.h>
int main()
{
printf("pid: %d\n",getpid());
printf("ppid: %d\n",getppid());
}
/*
gcc -o getpid a.c
./getpid
重复多次可以发现每次运行结果中pid是不断变化的,可见每次创建进程随机分配一个pid
但是ppid每次都是一样的,由此可见每次创建这个进程的进程(即父进程)是同一个。
*/
得到的ppid是一个正整数,在我的机器上是24176.
在/proc目录下可以看到很多进程的信息
linux> cd /proc
linux> ls
#找到示例运行得到的ppid
linux> cd 24176 #进入进程信息目录
linux> ll #或ls -l
#下面是我得到的结果
total 0
dr-xr-xr-x 9 root root 0 Apr 19 13:45 .
dr-xr-xr-x 92 root root 0 May 22 2019 ..
dr-xr-xr-x 2 root root 0 Apr 19 13:55 attr
-rw-r--r-- 1 root root