C语言判断Ubuntu是32bit还是64bit

2026年09月21日 16:06
有2个网友回答
网友(1):

方法有很多,基本可以分为命令方式和纯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即为位数。 
}

网友(2):

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章就是关于主机信息的