首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux中的最大PID

Linux中的最大PID
EN

Stack Overflow用户
提问于 2011-06-09 14:09:30
回答 3查看 80K关注 0票数 76

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

EN

回答 3

Stack Overflow用户

发布于 2011-06-09 14:14:19

Linux中PID的最大值是可配置的。您可以通过/proc/sys/kernel/pid_max文件访问它。这个文件(Linux2.5中的新文件)指定PID环绕的值(即该文件中的值大于最大PID值)。此文件的默认值为32768,其结果与早期内核中的PID范围相同。此文件中的值可设置为2^22 (PID_MAX_LIMIT,约400万)的任意值。

从编程的角度来看,您必须使用pid_t类型来处理进程ID,甚至可以使用整数特征访问它的min/max值。下面是一个在Linux2.6.X上运行在C++平台上的使用C++和Boost的例子:

代码语言:javascript
复制
$ 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
票数 21
EN

Stack Overflow用户

发布于 2015-12-09 02:56:41

来自proc(5)手册页:

/proc/sys/kernel/pid_max (自从Linux2.5.34之后)

此文件指定PID环绕的值(即该文件中的值大于最大PID值)。没有分配大于此值的PIDs;因此,该文件中的值也是对进程和线程总数的系统范围的限制。此文件的默认值为32768,其结果与早期内核中的PID范围相同。在32位平台上,32768是pid_max的最大值.在64位系统上,pid_max可以设置为2^22 (PID_MAX_LIMIT,约400万)的任意值。

票数 14
EN

Stack Overflow用户

发布于 2020-07-06 06:11:15

看来,Ubuntu20.04已经将限制推到最大值(4194304):

代码语言:javascript
复制
% cat /proc/sys/kernel/pid_max
4194304
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6294133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档