2013-10-17 3 views
2

나는 쉘이있는 CPU 또는 운영 시스템의 비트 수를 얻는 방법을 알고 있습니다.C에서 cpu/os의 비트 수를 어떻게 알 수 있습니까?

cat /proc/cpuinfo | grep lm #-> get bit count of a cpu 
uname -a     #-> get bit count of an operation system 

그러나 C 프로그램에서 어떻게 비트 수를 얻을 수 있습니까? 이 인터뷰 질문은 내 솔루션은 다음과 같다 :

int *ptr; 
printf("%d\n", sizeof(ptr)*8); 

그러나 면접관은 잘못했다. 그렇다면 정답은 무엇입니까?

+1

동안 쉘 명령 uname처럼 비슷한 결과를 얻을 수 있습니다 항상 사실입니다. 유일한 방법은 OS 기본 기능을 사용하여 운영 체제를 쿼리하는 것입니다. –

+0

@JoachimPileborg 우리는 OS 기본 함수를 사용할 수 있습니까? – xianyu1337

+0

물론 운영 체제에 따라 다릅니다. –

답변

1

POSIX는 C 함수 uname도 제공합니다. 내 컴퓨터에

#include <stdio.h> 
#include <sys/utsname.h> 

int main(){ 
    struct utsname buf; 
    uname(&buf); 
    printf("sysname: %s\nversion: %s\nmachine: %s\n ", buf.sysname, buf.version, buf.machine); 
    return 0; 
} 

출력은 :

포인터의 크기가 * 자주 * 플랫폼의 "크기"에 따라,이 아니다
sysname: Linux 
version: #1 SMP Tue Oct 2 22:01:37 EDT 2012 
machine: i686 
1

Linux의 경우 간단한 방법은 예를 들어. popenuname -m 명령과 함께 사용하고 출력을 구문 분석하십시오.

또 다른 방법은 uname 명령의 원본을 (쉽게 사용할 수 있음) 살펴보고 직접 구현 한 내용을 구현하는 것입니다.