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?