system("pause") para Linux

Publicado por Felipe Ruiz Peixoto em 26/05/2012

[ Hits: 36.521 ]

Blog: https://www.ubuntu.com/

 


system("pause") para Linux



Estou começando a programar em C, mas os programas que eu escrevo no Windows não funcionam no Linux, pois o comando system("pause") não funciona em Linux, visto que no Linux não existe o comando pause.

Para resolver este problema, eu utilizo os métodos abaixo:

getchar(); getchar();

Lê o caractere que o usuário digitar, depois "tira o enter do buffer".

#ifdef WIN32
#define PAUSE 1
#else
#define PAUSE 0
#endif
[...código...]
if(PAUSE==1)
   system("pause");
else
   system("read -p \"Pressione enter para sair\" saindo");
return(0);

Verifica se o programa está sendo executado em Windows, se sim, a variável PAUSE vale 1, caso contrario vale 0. Depois, no fim do programa, se PAUSE for 1, faz a pausa do Windows, caso contrário, faz a pausa para Linux.

Se alguém mais experiente tiver uma solução diferente, por favor poste aqui, até por que este assunto é bastante útil para estudantes que utilizam Linux.

Até mais!

Outras dicas deste autor

Assistente para converter pacotes .tar em .deb

Super usuário (root) no Android 4.1.2 (Samsung Young) sem uso de computador para limpar o sistema

TP-1 Engine - motor para criação de jogos

A conio.h para GNU/Linux

Immunet 3.0 antivírus - Resolvendo problemas de funcionamento

Leitura recomendada

Gnuconio, a conio para Windows e GNU/Linux (v0.1)

Movendo o cursor em C usando Console Escape Sequence

Compilando/Instalando o novo Cairo-Dock no Sabayon

Baixe de graça alguns livros do O'Reilly

Usando funções do sistema em C com "system"

  

Comentários
[1] Comentário enviado por eldermarco em 26/05/2012 - 09:05h

Bom, você não precisa realmente usar o system("pause") no Windows se executar o programa a partir do prompt ou usar uma IDE que leve isso em consideração (como o Code::Blocks). Além do que, a solução apresentada por você me parece uma má prática. Você não precisa usar nenhuma variável PAUSE. Simplesmente faça:

#ifdef WIN32
system ("pause");
#endif

no lugar de colocar somente a função. Simples assim. Isso fará com que a função system ("pause") seja compilada junto com o código somente se você estiver no Windows. O pré-processador se encarregará de tirar ela, caso isso não seja verdade. :)

[2] Comentário enviado por RuizBRX11 em 27/05/2012 - 12:07h

Boa eldermarco ! Vou começar a fazer desse jeito, é mais simples e poupa a memória usada pela variavel PAUSE.



Contribuir com comentário