Linux中的最大PID

我正在将一个应用程序从Tru64移植到Linux,并使用limits.h中定义的PID_MAX。 Linux没有这个定义。 如何在c中findPID_MAX而无需手动读取/proc/sys/kernel/pid_max ? 有图书馆吗?

32768默认情况下,您可以在/proc/sys/kernel/pid_max读取系统中的值。

你可以设置更高的值(在32位机器上可以达到2 22 = 4,194,304):

 echo 4194303 > /proc/sys/kernel/pid_max 

在这里阅读更多:

http://www.cs.wisc.edu/condor/condorg/linux_scalability.html(通过archive.org);

Linux中PID的最大值是可configuration的。 您可以通过/proc/sys/kernel/pid_max文件访问它。 这个文件(Linux 2.5中的新增function)指定了PID环绕的值(即,该文件中的值比最大PID大1)。 该文件的缺省值32768与前面的内核产生相同的PID范围。 该文件中的值可以设置为最大2 ^ 22(PID_MAX_LIMIT,大约400万)的任何值。

从编程的angular度来看,您必须使用pid_ttypes来处理进程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 

proc(5)手册页:

/proc/sys/kernel/pid_max (自Linux 2.5.34开始)

此文件指定PID回绕的值(即,此文件中的值比最大PID大1)。 大于这个值的PID没有被分配; 因此,此文件中的值也作为进程和线程总数的系统范围限制。 该文件的缺省值32768与前面的内核产生相同的PID范围。 在32位平台上,32768是pid_max的最大值。 在64位系统上, pid_max可以设置为最大2 ^ 22( PID_MAX_LIMIT ,大约400万)的任何值。