c - pid上限 - 根据pid查看进程信息




Linux中的最大PID (2)

我将应用程序从Tru64移植到Linux,它使用limits.h中定义的PID_MAX。 Linux没有那个定义。 如何在不读取/proc/sys/kernel/pid_max的情况下在c中找到PID_MAX? 有图书馆吗?



Linux中PID的最大值是可配置的。 您可以通过/proc/sys/kernel/pid_max文件访问它。 此文件(Linux 2.5中的新增内容)指定PID回绕的值(即,此文件中的值是大于最大PID的值)。 此文件的默认值32768导致与早期内核相同的PID范围。 此文件中的值可以设置为最大2 ^ 22(PID_MAX_LIMIT,大约4百万)的任何值。

从编程角度来看,您必须使用pid_t类型来处理进程ID。 您甚至可以使用整数特征访问它的最小/最大值。 下面是在x86_64平台上运行的Linux 2.6.X上使用C ++和Boost执行此操作的示例:

$ cat test.cpp 
#include <sys/types.h>
#include <iostream>
#include <boost/integer_traits.hpp>

using namespace std;

int main ()
{
    cout << "pid_t max = " << boost::integer_traits<pid_t>::const_max << endl;
}

$ ./test 
pid_t max = 2147483647




pid