每个进程都由一个进程ID号命名,该编号是一个pid\u t类型的值。创建每个进程时,会为其分配一个进程ID。随着时间的推移,进程ID会被重用。当进程终止后,相应进程的父进程等待进程ID时,进程的生存期结束。参见过程完成。(父进程可以隐式安排这种等待。)进程ID仅在进程生命周期内唯一标识进程。根据经验,这意味着进程必须仍在运行。
进程ID还可以表示进程组和会话。请参阅作业控制。
在Linux上,由pthread_create创建的线程也会收到一个线程ID。初始(主)线程的线程ID与整个进程的进程ID相同。随后创建的线程的线程ID是不同的。它们从与进程ID相同的编号空间分配。进程ID和线程ID有时也称为任务ID。与进程相反,线程从不显式等待,因此一旦线程退出或取消,线程ID就有资格重用。这甚至适用于可连接线程,而不仅仅是分离线程。线程被分配给一个线程组。在Linux上运行的GNUC库实现中,进程ID是进程中所有线程的线程组ID。
您可以通过调用getpid来获取进程的进程ID。函数getppid返回当前进程父进程的进程ID(也称为父进程ID)。您的程序应该包含头文件unistd.h和sys/types.h以使用这些函数。
数据类型:pid\U t
pid_t数据类型是一个有符号整数类型,能够表示进程ID。在GNU C库中,这是一个int。
函数:pid\u t getpid(void)
函数返回当前进程的进程ID。格特皮德
函数:pid\u t getppid(void)
函数返回当前进程父进程的进程ID。getppid
函数:pid\u t getId(void)
函数返回当前线程的线程ID。返回的值是从Linux内核获得的,不需要缓存。请参阅上面关于线程ID的讨论,特别是关于重用已退出的线程ID的讨论。
https://www.gnu.org/software/libc/manual/html_node/Process-Identification.html