Как закрыть терминал с моей программой?

Мой код:

#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");
}

Проблема состоит в том, что моя программа делает сканирование, но терминал остается открытым, я компилирую и запускаю свою программу с терминальным использованием: gcc auto.cpp -o auto.exe скомпилировать, и ./auto.exe работать. Я пытаюсь использовать system("exit") но это не работает. P.S. жаль о моем плохом английском языке.

1
задан 30 April 2017 в 21:25

1 ответ

Хотя Вы не можете подать свою скомпилированную заявку закрыть окно терминала, в котором она работает, легко заставить это произойти путем изменения пути, как Вы выполняете свою программу.

Например, если Ваше исполняемое приложение может быть запущено с помощью ./myprogramm, Вы могли просто ввести команду ниже в Вашем терминале к первому показу myprogramm и как только это заканчивается, работайте exit управляйте для закрытия оболочки и с ним целое окно терминала:

./myprogramm ; exit

Или возможно было бы еще лучше только закрыть окно терминала, если бы Ваше приложение вышло успешно, без любой ошибки (обозначенный статусом выхода кодируют кроме 0). Можно использовать && вместо ; для выполнения второй команды, только если первая команда была успешна:

./myprogramm && exit

Третья альтернатива должна была бы заменить оболочку, работающую в Вашем окне терминала с Вашим приложением, вместо того, чтобы запустить Ваше приложение в оболочке. Тем путем окно терминала закроется, как только Ваше приложение выходит, и Вы не должны выходить из оболочки в той точке больше:

exec ./myprogramm

Одна большая разница между первыми двумя подходами (; exit и && exit) и последнее использование exec это в первом случае, можно уничтожить команду, которую Вы выполнили путем удара Ctrl+C, и Вы вернетесь в оболочке, окно останется открытым. Если Вы использовали exec, это также уничтожит Ваше приложение, но поскольку больше нет оболочки внутри, которую оно выполняет, окно терминала закроется сразу также.

1
ответ дан 7 December 2019 в 15:36

Другие вопросы по тегам:

Похожие вопросы: