对特定的linux程序强制使用低进程ID

问题描述 投票:0回答:1

我需要运行一个与高进程 ID(>16 位)不兼容的程序(请参阅 https://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and- mac-os-x/topic/607517),并且在启用了高进程 ID 的系统上(pid_max=4194303),无法更改为不同的编译器版本(仅以二进制形式提供)。如果在输出重定向(例如通过 Jenkins 或 CTest)时获得 PID > 65535,则此进程总是崩溃。

是否有一种方法可以在系统仍配置为使用高 ID 的同时,为该特定程序提供低进程 ID?这必须由没有 root 访问权限的普通用户来完成(在启动之前/之后更改 /proc/sys/kernel/pid_max 不是解决方案)。

附带问题:pid_max>4000000 的 RedHat Enterprise Linux/CentOS 系统是否可以被视为“RedHat 兼容”,或者这是一个不兼容的更改?

linux process
1个回答
0
投票

当你 fork 时,除了 pid 之外,你必须使用相同的进程。您可以退出父进程并获得新的 pid(但该进程也是守护进程)。如果你迭代,只要你的 pid 足够小,你就可以启动。不过,这可能需要一段时间。在我的系统上大约是 2500 pid/秒。这意味着循环一次你需要等待大约1600秒。

© www.soinside.com 2019 - 2024. All rights reserved.