Como fechar o terminal com meu programa?

1

Meu código:

#include <cstdlib>

#include <time.h>

#include <unistd.h>

using namespace std;

int main()
{
system("clamscan -r --log=clamavlog.txt --infected --bell /home/secon/Downloads");
sleep(1);
system("exit");
}

O problema é que meu programa faz a varredura, mas o terminal permanece aberto, eu compilo e executo meu programa com termianl usando: gcc auto.cpp -o auto.exe para compilar e ./auto.exe para executar. Eu tento usar system("exit") , mas não funciona. P.S. desculpe pelo meu mau inglês.

    
por secon25 30.04.2017 / 20:11

1 resposta

1

Embora você não possa fazer com que seu aplicativo compilado feche a janela do terminal em que está sendo executado, é fácil fazer isso acontecer alterando a maneira como você executa seu programa.

Por exemplo, se seu aplicativo executável puder ser iniciado usando ./myprogramm , você poderia simplesmente digitar o comando abaixo em seu terminal para executar primeiro myprogramm e assim que terminar, execute o comando exit para fechar o shell e com ele toda a janela do terminal:

./myprogramm ; exit

Ou talvez seja ainda melhor apenas fechar a janela do terminal se o aplicativo sair com êxito, sem nenhum erro (indicado por um código de status de saída diferente de 0). Você pode usar && em vez de ; para executar o segundo comando somente se o primeiro comando for bem-sucedido:

./myprogramm && exit

Uma terceira alternativa seria substituir o shell em execução na sua janela de terminal com seu aplicativo, em vez de executar seu aplicativo dentro do shell. Dessa forma, a janela do terminal será fechada assim que o seu aplicativo sair e você não precisar mais sair do shell nesse ponto:

exec ./myprogramm

Uma grande diferença entre as duas primeiras abordagens ( ; exit e && exit ) e a última usando exec é que, no primeiro caso, você pode matar o comando que você executou apertando Ctrl + C e você estará de volta no shell, a janela permanecerá aberta. Se você usou exec , isso também matará seu aplicativo, mas como não há mais shell dentro do qual ele está sendo executado, a janela do terminal será fechada imediatamente.

    
por Byte Commander 30.04.2017 / 23:07