怎么知道uid_t就是int型的呢

Mark0904 2011-03-29 06:46:38
uid_t uid;
gid_t gid;

printf("uid:%d, gid:%d\n", uid, gid);

在unistd.h中只找到这样子的定义
# ifndef __uid_t_defined
typedef __uid_t uid_t;
# define __uid_t_defined
# endif
我怎么知道uid_t就是int型的呢?
...全文
260 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
I'mAlex 2012-12-12
  • 打赏
  • 举报
回复
0
1
2
...
 9{
10  uid_t uid1;
11  return 0;
12}
$gdb a.out (gdb)b 11 (gdb)ptype uid_t 真相已经出现了。
Mark0904 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 justkk 的回复:]

那就继续找__uid_t 的定义看看
find /usr/include -name "*.h"|xargs grep -w __uid_t|grep def
[/Quote]
谢谢CSDN各位大侠的帮忙。。。
2011-03-29
  • 打赏
  • 举报
回复
我的机器上是

/usr/include/sys/types.h:82
typedef __uid_t uid_t;

/usr/include/bits/types.h:135
__STD_TYPE __UID_T_TYPE __uid_t;

/usr/include/bits/typesizes.h:31
#define __UID_T_TYPE __U32_TYPE

/usr/include/bits/types.h:102
#define __U32_TYPE unsigned int

/usr/include/bits/types.h:127
# define __STD_TYPE typedef
Mark0904 2011-03-29
  • 打赏
  • 举报
回复
我用的是fedora14。
奇怪,我的/usr/include/sys/types.h找不到这样的定义。
justkk 2011-03-29
  • 打赏
  • 举报
回复
在AIX平台的查找结果

/usr/include/sys/types.h:typedef uint_t uid_t; /* user ID */
/usr/include/sys/types.h:typedef unsigned int uint_t;
Mark0904 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hhbgk 的回复:]

Linux内核是没有浮点型的类型,大多是整型、长整型、字符型等,

用uid_t、gid_t、size_t、pid_t...有利于平台的移植,屏蔽了平台上的实际数据类型的差异
[/Quote]
嗯。知道了。
时间一粒 2011-03-29
  • 打赏
  • 举报
回复
Linux内核是没有浮点型的类型,大多是整型、长整型、字符型等,

用uid_t、gid_t、size_t、pid_t...有利于平台的移植,屏蔽了平台上的实际数据类型的差异
Mark0904 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 justkk 的回复:]

那就继续找__uid_t 的定义看看
find /usr/include -name "*.h"|xargs grep -w __uid_t|grep def
[/Quote]
没找到。
/usr/include/_G_config.h:#define _G_uid_t __uid_t
/usr/include/signal.h:typedef __uid_t uid_t;
/usr/include/sys/stat.h:typedef __uid_t uid_t;
/usr/include/sys/ipc.h:typedef __uid_t uid_t;
/usr/include/sys/types.h:typedef __uid_t uid_t;
/usr/include/pwd.h:typedef __uid_t uid_t;
/usr/include/unistd.h:typedef __uid_t uid_t;
justkk 2011-03-29
  • 打赏
  • 举报
回复
那就继续找__uid_t 的定义看看
find /usr/include -name "*.h"|xargs grep -w __uid_t|grep def
Mark0904 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wukong000 的回复:]

打印一下看看输出长度一样不一样呗。
[/Quote]
我是想问在写程序的时候怎么就知道uid_t就能用%d打印出来的呢?
头文件里又没有相关定义。
wukong000 2011-03-29
  • 打赏
  • 举报
回复
打印一下看看输出长度一样不一样呗。

23,216

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧