gpt4 book ai didi

c - 如何确定 pid_t 的最大值?

转载 作者:IT王子 更新时间:2023-10-29 00:46:57 30 4
gpt4 key购买 nike

如何方便地确定 pid_t 类型的最大值?我的系统上没有 PID_MAX 常量。

(注意,我指的是数据类型允许的最大值,而不是系统分配给进程的事实上最大值。)

用例:我正在将用户提供的 pid 字符串规范转换为 pid_t,并希望确保用户的输入不超过类型的容量。

最佳答案

我过去有时做的是使用较大的数据类型,然后当我转换为较小的类型时,立即转换回较大的类型并检查值没有改变。

例如,假设您改用了 int64_t,那么您可能会得到如下内容:

int64_t my_pid64;

/* ... parse string value into my_pid64 ... */

pid_t my_pid = (pid_t) my_pid64;
if ((int64_t) my_pid != my_pid64) /* check that value was not out of range of pid_t */
{
/* ... handle error ... */
}

对于较大的数据类型,没有很好的选择。 “long”曾经是最大的原始整数数据类型,但在某些常见的编译器/体系结构上不再如此——即使对于 Linux(请参阅下面的评论)。同时,intmax_t 类型的库支持很差。结果是 int64_t 有时在实践中更有用。

但是,对于更大的数据类型,基本上您的选择可能是 long、int64_t 和 intmax_t。

关于c - 如何确定 pid_t 的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12841488/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com