代码之家  ›  专栏  ›  技术社区  ›  0v3rl04d

提取子进程PID的最后一位[已关闭]

  •  -4
  • 0v3rl04d  · 技术社区  · 13 年前

    “确保每个孩子在完成之前等待n秒(在 n是子进程ID的最后一位)“

    例子:

    子PID:5023//最后一位=3 睡眠(3)

    如何从PID中提取最后一个数字??

    谢谢大家!

    4 回复  |  直到 13 年前
        1
  •  4
  •   qaphla    13 年前

    如果PID存储在一个名为 x ,则可以找到最后一个数字作为 x % 10 .

        2
  •  0
  •   Jake Evans    13 年前

    使用 modulo

    int lastDigit = pid % 10;

    不过要小心,如果最后一个数字是0,你会遇到问题的!

        3
  •  0
  •   pzaenger lio    13 年前

    使用 mod 10 以获取该值,例如:

    int a = 123;
    printf("%d\n", a % 10)
    

    输出:

    3
    

    当然,你需要的是pid而不是a。

        4
  •  0
  •   chux    13 年前

    PID的类型通常是PID_t,一种整数类型,来自“sys/types.h”。因为它应该是 签署 类型推荐

    unsigned LastDigit=((unsigned)pid)%10;

    这将确保你的mod不会报告负面结果,如-57%10->-7.

    sleep(t) 拿一个 unsigned 参数您的变量 pid ,取负值,如-1, sleep(pid % 10) ,会睡一个 长的 时间

    [编辑] pid_t 是一个签名类型。A. pid_t(_t) 变量在函数(如)返回错误时为负数 fork() ,