因为项目需要根据业务情况调整进程的调度策略和进程优先级,所以需要先获取进程的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函数。