If i am working on a unix machine how could i know the size of the machine whether it is 64 bit or 32 bit machine.
Assuming you want to do this at compile time - take a look here for architecture macros you can test. You are probably looking for __x86_64__
.
If you're just looking to check the architecture of a machine you're on,
%> uname -a
from the command line usually contains an indication in the output.
I have to deal with a lot of Unix platforms and generally the best way I have found is to look at the output of "uname -a". For example, if you see something like "i686 i686 i386 GNU/Linux" in the output you know it's a 32 bit machine. If "amd64" shows up it's a 64. Sometimes it's a matter of trying to run a 64 bit programme. Sometimes it's RTFM.
AIX you can do this:
getconf KERNEL_BITMODE
HP-UX you can do this:
getconf KERNEL_BITS
or just:
getconf -a | grep KERN
Sun Solaris you can do this:
isainfo -v
For Linux, yes, the uname -a
should do the trick
You can also try sizeof(int *)
. Should be 4 on 32 bit machines and 8 on 64 bit machines.