我想获取文件 /sys/sys/proc.h
中存在的 PID_MAX
宏的值。
我当前的代码(main.c):
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h> /* type pid_t */
#include <sys/proc.h> /* macro PID_MAX */
#include <sys/unistd.h> /* function getpid, getppid */
/*
gcc -Wall -Wextra main.c -o main
./main
*/
int main ()
{
pid_t pidmax = PID_MAX;
printf ( "Value = %d\n", pidmax );
return 0;
}
返回以下错误:
error: 'PID_MAX' undeclared (first use in this function); did you mean 'UID_MAX'?
这怎么可能?
恢复 PID_MAX
的另一种方法?
最佳答案
没有独立于平台的方法来检索最大 pid 值。
例如在linux下,可以通过/proc/sys
接口(interface)确定该值
$ sysctl kernel/pid_max
32768
在 FreeBSD 下,该值为 99999
。如果您仔细查看 sys/proc.h
,您会注意到宏 PID_MAX
由
#ifdef _KERNEL
...
#define PID_MAX 99999
...
#endif
这就是为什么你不能(也不应该)在用户空间程序中使用它。
关于c - 如何获取 PID_MAX 宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58627561/