如何使用我的程序关闭终端?

如何使用我的程序关闭终端?

我的代码:

#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")但它不起作用。PS 抱歉我的英语不好。

答案1

虽然您无法让编译后的应用程序关闭正在运行的终端窗口,但通过改变执行程序的方式可以轻松实现这一点。

例如,如果您的可执行应用程序可以使用启动./myprogramm,那么您只需在终端中键入以下命令即可首先运行myprogramm,并在完成后立即运行该exit命令以关闭 shell 以及整个终端窗口:

./myprogramm ; exit

或者,也许更好的方法是,仅在应用程序成功退出且没有任何错误(由 0 以外的退出状态代码表示)时才关闭终端窗口。只有当第一个命令成功时,您才可以使用&&而不是;来运行第二个命令:

./myprogramm && exit

第三种选择是将终端窗口中运行的 shell 替换为您的应用程序,而不是在 shell 内运行应用程序。这样,应用程序退出后终端窗口就会关闭,您不必再退出 shell:

exec ./myprogramm

前两种方法(; exit&& exit)与最后一种使用方法之间的一个很大的区别exec是,在第一种情况下,您可以通过按Ctrl+来终止您运行的命令C,然后您将返回到 shell,窗口将保持打开状态。如果您使用exec,这也会终止您的应用程序,但由于不再有在其中运行它的 shell,因此终端窗口也会立即关闭。

相关内容