O núcleo do problema é que você está tentando executar o programa, que é o aplicativo de console, mas você não tem um terminal conectado a ele . No terminal você pode executar seu programa apenas chamando o nome do programa, mas na GUI você precisa especificar explicitamente que deve haver uma janela de terminal para executar aplicativos de console (isso é particularmente verdadeiro para desktops baseados no GNOME, como o Unity do Ubuntu) .
O que deve ser feito é que você também precisa criar um arquivo .desktop para o seu programa com 4 campos. Aqui está um exemplo:
[Desktop Entry]
Name=MyProg
Type=Application
Exec=/home/xieerqi/example_directory/hello_world_prog
Terminal=true
Eu não sei sobre o CentOS, mas no que diz respeito ao Ubuntu, é necessário que .desktop aplicações sejam executáveis também se elas estiverem localizadas em qualquer diretório sob o diretório home do usuário . .desktop arquivos que vivem em outros diretórios, como /usr/share/applications , não exigem isso.
Portanto, depois de ter o arquivo .desktop em vigor e torná-lo executável, você poderá executar o programa. O bit importante é Terminal=true line. É o que dirá à GUI para levantar um terminal e executar seu programa lá. OBSERVAÇÃO : se o seu programa executa coisas e sai imediatamente, você precisará ter algum tipo de atraso ou getchar(); para manter a janela aberta, porque a janela do terminal sairá quando o programa terminar. É por isso que muitos usuários às vezes ficam confusos "Por que meu programa não está em execução?" Corre, na realidade, apenas sai muito rápido.
Notas adicionais :
- elimine
system("read -p 'Press Enter to EXIT...' var");. A chamadareadé um shell embutido e não é um programa independente , o que significa que ele só pode ser usado se você usar um shell, comobash. Se você estiver usando C, faça isso corretamente usandoscanf()ougetchar()para adicionar atraso ao seu programa. Ele está presente apósreturn 0;line, o que significa que sua linhasystem()não será alcançada (o programa só será encerrado emreturnstatement), portanto, a colocação da pausa para o programa também é inválida. - Leia este post no AskUbuntu, por exemplo, sobre o arquivo
.desktopadequado com links para documentação oficial . - Se você está se sentindo preguiçoso e não quer fazer
.desktoparquivos para cada arquivo executável, há muitas soluções aqui . Eu até publiquei um script lá também.