方法有很多,基本可以分为命令方式和纯C语言方式:
一、命令方式。
判断Ubuntu是32位还是64位,常规方法是使用uname命令,即
uname --m
如果结果为x86_64那么则是64位,否则为32位。
在C语言中,可以通过
FILE *fp = popen("uname --m");
然后读取fp指向的管道文件数据,获得结果,如:
char s[100];
fgets(s, 100, fp);//读取数据。
if(strncmp("x86_64", s, 6) == 0) //64位
printf("OS is 64 bits\n");
else printf("OS is 32 bits\n");
二、使用纯C方式。
C的特点是有指针,而指针表示的是内存地址,其实也就是OS的位数。
所以只需要求得任意的指针类型的sizeof, 乘8即为操作系统位数。
如
int get_bits(void)
{
return sizeof(char *)*8;//获取char*类型的大小,乘8即为位数。
}
linux 系统函数
int uname(struct utsname *string)
把Linux的主机相关的信息放入名字为string的utsname结构体中,,这是一个地址,你需要定义string为指针
这是结构体里面的成员
struct utsname {
char sysname[] 操作系统名
char nodename[] 主机名
char release[] 系统发行级别
char version[] 系统版本号
char machine[] 硬件类型
}
你可以看一看“Linux程序设计”这本书,,它里面4.6章就是关于主机信息的