Pular para o conteúdo

system("pause") para Linux

Dica publicada em C/C++ / Miscelânea
Felipe Ruiz Peixoto RuizBRX11
Hits: 36.840 Categoria: C/C++ Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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();
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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!

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Link para várias modificações e Add-ons de Jogos

Linux Omni-bot Autosetup 2011, programinha que facilita o uso do Omni-bot

Campanhas para MegaGlest usando Python

DeVeDe - usando e evitando erros

Minetest Mods no Ubuntu - Pacote completo

Lista de livros C++

Corrigindo o bug "file format not recognized" após atualizar glib2

STDPRN para GCC

Programando em C/C++ no Eclipse

Ambiente de desenvolvimento integrado para console

#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

Entre na sua conta para comentar.