我知道该标准没有说明uid_t
或gid_t
的签名。
不一致:
页面http://www.gnu.org/software/libc/manual/html_node/Reading-Persona.html说:
但是man setreuid
说:
问题:
uid_t
是在GNU库中签名还是未签名的?-1
和uid_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/