A menos que seu programa esteja chamando algum tipo de popup GUI para aparecer, ele tentará imprimir em um terminal. Normalmente, os programas esperam que stdout
(fluxo de saída) esteja presente. Então, o que acontece é que seu comando é executado muito bem, o navegador Nautilus chama o shell para iniciar seu programa, mas não há nenhum lugar para esse programa imprimir.
Você pode passar por um problema ao criar uma entrada personalizada no menu Run as
, ou aqui está uma solução mais simples:
Abra o editor de texto e faça este arquivo ~/.local/share/applications/run_executable.desktop
( NOTE ~ significa que seu diretório /home/username
e .local
é uma pasta oculta) com o seguinte conteúdo:
[Desktop Entry]
Type=Application
Name=RunExecs
Exec=gnome-terminal -e 'bash -c "%u; read"'
Terminal=true
Agora abra o gerenciador de arquivos e arraste esse novo arquivo para o lançador. Uma vez que você tenha este ícone no lançador, você pode simplesmente arrastar e soltar seu código C compilado, ele irá abrir gnome-terminal
e executá-lo. Eu tenho essa mesma configuração exata no Ubuntu 16.04, sem problemas detectados com isso até agora.
Você pode tentar adicionar esse arquivo como opção de clique direito ao gerenciador de arquivos, como é mostrado em este artigo, mas pode ser um pouco datado, e eu pessoalmente nunca o testei, então ele não pode recomendar ou não
Editar
O que eu também aprendi ontem com resposta de Jacob Vlijm é que você pode adicionar scripts personalizados ao nautilus. Por exemplo, crie o arquivo /home/user/.local/share/nautilus/scripts/run_executable.sh
com este conteúdo:
#!/bin/bash
FILE=$(readlink -e "$@")
echo "$FILE"
if [ -n "$FILE" ] ; then
gnome-terminal -x bash -c '"$@";read' bash $FILE
fi
Verifique se ele tem permissões executáveis, fazendo chmod +x ~/.local/share/nautilus/scripts/run_executable.sh
e reinicie o nautilus, se necessário. Depois disso, você pode clicar com o botão direito em qualquer arquivo executável e terá a opção scripts -> run_executable.sh
.
Observe que esta pergunta é sobre ambos, compilação e execução. Não vou abordar a compilação, porque a compilação geralmente requer o fornecimento de opções ao compilador manualmente, como nos casos em que as bibliotecas precisam ser vinculadas. Se o usuário assim desejar, eles podem modificar meus scripts, mas eu aconselho não adicionar uma opção de compilação e ficar apenas com a opção de execução