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_t
types来处理进程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万)的任何值。