A função system(...)
em C pega um comando como string (que é uma matriz char em C) e passa para o processador / shell padrão do sistema operacional para executá-lo.
No Windows, isso seria feito por cmd.exe
, que tem um comando interno pause
que imprime algo como "Pressione qualquer tecla para continuar ..." e aguarda um evento de teclado antes de sair.
No entanto, o Ubuntu felizmente não possui cmd.exe
, mas usa sh
aqui como seu shell padrão (que é dash
internamente), que não possui um comando pause
. Você pode usar algo assim:
read -p 'Press Enter to continue...' var
Veja Qual é o equivalente bash do comando pause do DOS? e Qual é o equivalente do Linux para DOS pausa? (Stack Overflow) para mais informações, mas observe que C chama sh
aqui e não bash
.
Então, no seu código C, a linha pode ser substituída por:
system("read -p 'Press Enter to continue...' var");
Isso tornaria seu programa só executável em sistemas Linux com shells compatíveis com sh
, mas não funcionaria mais no Windows dessa forma.
No entanto, observe que o uso de system("pause");
ou alternativas semelhantes (até mesmo independentes de plataforma) é geralmente desencorajado por razões explicadas em sistema (“pausa”); - Por que isso está errado?