我知道该标准没有说明uid_tgid_t的签名。
不一致:
页面http://www.gnu.org/software/libc/manual/html_node/Reading-Persona.html说:

但是man setreuid说:

问题:

  • 那么,uid_t是在GNU库中签名还是未签名的?
  • 如果-1uid_t未签名(如何将gid_t转换为-1),如何提供0xFFFFFFFF
  • 最佳答案

    uid_t(在某些类型定义/定义之后)定义为__U32_TYPE,而unsigned int定义为-1(在我的Gentoo Linux系统上)。

    但是,仅因为int具有特殊含义,并不意味着UID限于已签名的(unsigned int)-1中适合的数字。这只是意味着最大值(即setreuid)不是有效的UID。 (signed int)ruid中的代码虽然可以接受-1,但可能会使用该转换的相反形式(uid_t)干净地与ojit_code进行比较。

    关于c - uid_t类型是带符号的还是无符号的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21370094/

    10-12 16:39