Linux系统调用:获取进程PID
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 0 Apr 19 13:55 autogroup -r-------- 1 root root 0 Apr 19 13:55 auxv -r--r--r-- 1 root root 0 Apr 19 13:55 cgroup --w------- 1 root root 0 Apr 19 13:55 clear_refs -r--r--r-- 1 root root 0 Apr 19 13:45 cmdline -rw-r--r-- 1 root root 0 Apr 19 13:55 comm -rw-r--r-- 1 root root 0 Apr 19 13:55 coredump_filter -r--r--r-- 1 root root 0 Apr 19 13:55 cpuset lrwxrwxrwx 1 root root 0 Apr 19 13:55 cwd -> /proc/24176 -r-------- 1 root root 0 Apr 19 13:55 environ lrwxrwxrwx 1 root root 0 Apr 19 13:45 exe -> /usr/bin/bash #看到这个bash,我猜测这个进程极有可能就是linux shell,即shell是我们的程序对应进程的父进程 dr-x------ 2 root root 0 Apr 19 13:45 fd dr-x------ 2 root root 0 Apr 19 13:55 fdinfo -rw-r--r-- 1 root root 0 Apr 19 13:55 gid_map -r-------- 1 root root 0 Apr 19 13:55 io -r--r--r-- 1 root root 0 Apr 19 13:55 limits -rw-r--r-- 1 root root 0 Apr 19 13:55 loginuid dr-x------ 2 root root 0 Apr 19 13:55 map_files -r--r--r-- 1 root root 0 Apr 19 13:55 maps -rw------- 1 root root 0 Apr 19 13:55 mem -r--r--r-- 1 root root 0 Apr 19 13:55 mountinfo -r--r--r-- 1 root root 0 Apr 19 13:55 mounts -r-------- 1 root root 0 Apr 19 13:55 mountstats dr-xr-xr-x 5 root root 0 Apr 19 13:55 net dr-x--x--x 2 root root 0 Apr 19 13:55 ns -r--r--r-- 1 root root 0 Apr 19 13:55 numa_maps -rw-r--r-- 1 root root 0 Apr 19 13:55 oom_adj -r--r--r-- 1 root root 0 Apr 19 13:55 oom_score -rw-r--r-- 1 root root 0 Apr 19 13:55 oom_score_adj -r--r--r-- 1 root root 0 Apr 19 13:55 pagemap -r--r--r-- 1 root root 0 Apr 19 13:55 personality -rw-r--r-- 1 root root 0 Apr 19 13:55 projid_map lrwxrwxrwx 1 root root 0 Apr 19 13:55 root -> / -rw-r--r-- 1 root root 0 Apr 19 13:55 sched -r--r--r-- 1 root root 0 Apr 19 13:55 schedstat -r--r--r-- 1 root root 0 Apr 19 13:55 sessionid -rw-r--r-- 1 root root 0 Apr 19 13:55 setgroups -r--r--r-- 1 root root 0 Apr 19 13:55 smaps -r--r--r-- 1 root root 0 Apr 19 13:55 stack -r--r--r-- 1 root root 0 Apr 19 13:45 stat -r--r--r-- 1 root root 0 Apr 19 13:55 statm -r--r--r-- 1 root root 0 Apr 19 13:45 status -r--r--r-- 1 root root 0 Apr 19 13:55 syscall dr-xr-xr-x 3 root root 0 Apr 19 13:55 task -r--r--r-- 1 root root 0 Apr 19 13:55 timers -rw-r--r-- 1 root root 0 Apr 19 13:55 uid_map -r--r--r-- 1 root root 0 Apr 19 13:55 wchan
总结
pid_t getpid(void);//返回当前进程pid pid_t getppid(void);//返回父进程pid
相关推荐
Attend 2020-06-14
citic 2020-06-14
liujiaoyage 2020-09-09
山有木兮卿有意 2020-06-25
wandererdl 2020-06-14
ajuan 2020-03-03
wangrui0 2020-02-20
LczPtr 2020-02-14
fcds00 2020-01-28
DonviYang 2020-01-08
Happyunlimited 2020-01-01
学习备忘录 2019-12-08
batoom 2011-03-06
pwl 2008-06-13
IsanaYashiro 2019-11-05
hehuistudent 2008-09-11
vanturman 2019-10-21