É 32 ou 64 bits?

Publicado por Pythonux (última atualização em 13/01/2016)

[ Hits: 2.808 ]

Download arch.c




Script para detectar se o sistema é 32 ou 64 bits.

  



Esconder código-fonte

#include <stdio.h> // printf()

int main(void){
   #ifdef x86
   printf("32 bits \\o/\n");
   #elif x86-64
   printf("64 bits \\o/\n");
   #else
   printf("PC da xuxa \\o/\n");
   return 1;
   #endif

   return 0;
}

Scripts recomendados

Função "Partição de Inteiros" Recursiva COM Tabela Estática em C

Calculadora em C

Stack (LIFO)

Arvores Red Black

S. MarioBros - Editor de fase 0.1


  

Comentários
[1] Comentário enviado por Arthur_Hoch em 13/01/2016 - 22:13h

Você poderia usar o uname:

$ uname -p

[2] Comentário enviado por bielinux em 13/01/2016 - 23:09h

Tá doido, é?
Isto é C, e não shell script!
Se eu usasse o uname, consumiria mais recursos, e jogaria por água abaixo desempenho, ressalto também que isso é uma verdadeira gambiarra e que o código não seria multiplataforma, rodaria apenas em *NIX. Posso rodar este programa tanto em DOS-likes quanto *NIX-likes, ou qualquer outro estilo desconhecido de sistema.

Para executar códigos de shell script, é só usar a função system() da biblioteca <stdlib.h>, mas que eu saiba, até onde eu vi o system() não traz o retorno dos comandos, apenas os executa.

[3] Comentário enviado por uetanabaro em 14/01/2016 - 08:22h

Lembrando que funciona somente se compilarmos o sistema no ambiente desejado por se tratar de diretivas de pré-processador

[4] Comentário enviado por bielinux em 14/01/2016 - 13:01h

Exato, uetanabaro!
Esse foi o propósito do meu script - mostrar o poder das diretivas de pré-processador.

[5] Comentário enviado por removido em 28/02/2016 - 08:40h

Na prática em shell poderia ser usado lsb_release -a
Mas neste programa em C poderia ser usado um identificador para Lin e Win, não é?

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden

[6] Comentário enviado por MattF em 03/03/2016 - 19:06h

Por favor, alguém me explica isso:

[code]
mattf@solaris:~$ ./arch
64 bits \o/
mattf@solaris:~$ uname -p
i386
[/code]

Porque isso aconteceria no solaris?(arch é o programa acima compilado)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts