因为项目需要根据业务情况调整进程的调度策略和进程优先级,所以需要先获取进程的ID。
在Linux操作系统中,如果要使用C语言获取进程ID,可以利用两个接口getppid()和getpid()来获取进程ID,他们都是unistd.h库中定义的内置函数。
一.getpid()函数
系统中的任何进程都有唯一的ID标识它们,创建它们的时候,它们也都会被分配唯一的ID。getpid()函数返回的是调用进程(即调用这个函数的进程)的进程ID。
基本的语法为:pid_t getpid(void);(pid_t是进程ID的类型,它是无符号整数类型的数据类型)
返回值:返回值的类型为int;返回值即为当前进程的进程ID;它永远不会抛出任何错误,所以它总是成功的。
二.getppid()函数
getppid()函数用来返回调用进程的父进程ID。如果调用进程是用fork()函数创建的,并且在getppid()函数调用时其父进程还存在着,那么这个函数就会返回父进程的进程ID,否则就会返回一个值1,这个值是init进程的进程ID。
基本语法:pid_t getppid(void);
返回值:返回值的类型为Int;返回值为当前进程的父进程ID;它永远不会抛出任何错误,因此总是成功的。
三.代码说明
下面通过一段简单的代码说明一下Linux系统中使用C语言如何获取调用进程ID和父进程。
输出结果如下:
说明:头文件
1. stdio:用于printf()函数的头文件;
2. sys/types.h:用于pid_t类型,也就是用于存储进程ID的变量的数据类型;
3. unistd.h:用于getpid和getppid函数。