如何关闭应用程序本身和终端?

时间:2011-08-04 04:14:21

标签: c terminal

在我的C控制台应用程序中,我想退出应用程序并同时触发退出命令以关闭终端。但是,下面的代码似乎不起作用。一旦我运行应用程序,它就会退出应用程序,但不会关闭终端。

int main(void)
{
  system("exit");
  return 0;
}

请提出任何建议。

6 个答案:

答案 0 :(得分:3)

您的“exit”命令没有被发送到启动程序的shell,而是一个新shell,为执行命令而明确执行。它没有做任何事情。

如果没有shell的合作,你的程序就无法干净地退出启动它的shell。例如,假设我们在UNIX上运行bash或Bourne shell,如果在终端中,则使用

启动程序
exec theprogname

然后启动shell将被您的程序替换,因此当您的程序退出时,shell将退出。

答案 1 :(得分:2)

system命令创建 new shell进程并向该shell发出命令,因此当您发出exit时,它将仅关闭新shell。

做你要求的方法是:

#include <unistd.h>
#include <signal.h>
int main(int argc, char *argv[])
{
    kill(getppid(), SIGKILL);
    return 0;
}

然而,这是 A BAD IDEA (出于多种原因:你盲目地杀死了一些产生你的过程而没有真正线索它实际上是什么......它可能是用户的登录shell,或者可能是init)。你可能只是想关闭终端窗口,对吧?然后像这样启动你的程序:

xterm -e my_program

这将在您自己的窗口中运行您的程序,该窗口在程序完成时关闭。没有任何技巧,它适用于任何程序。

答案 2 :(得分:1)

如果您在终止程序时使用信号,它可能会起作用。一个。 ķ。一个。

#include <signal.h>
#include <stdio.h>

void terminate(int param)
{
   system("exit");
}

int main()
{
   void (*sig)(int);
   sig = signal(SIGTERM, terminate);
   return 0;
}

答案 3 :(得分:0)

如果您只想编译,运行,然后关闭窗口,您可以创建一个make文件,然后您需要做的就是在命令提示符下键入make。要使用make文件执行此操作,您可以执行以下操作:

EXEC   = program
NAME   = prog
RUN    = gcc
EXIT   = exit

$(EXEC): 
    $(RUN) -o $(EXEC) $(NAME)
    $(EXEC)
    $(EXIT)

我没有测试过这个,但这基本上就是你需要的。以下是make文件的另一个示例:http://www-rohan.sdsu.edu/faculty/gleonard/html/Makefile

那个将删除创建的文件,因此您不会收到“文件是最新的”错误。希望这有帮助

答案 4 :(得分:-1)

简单 - 只需在Windows上运行即可。当程序退出时,终端窗口将自动关闭。 (也许有办法改变这一点,但我不知道)。

但我认为你正在寻找C特有的东西。抱歉,但你运气不好。一切都是针对特定操作系统的。举个例子,假设您正在使用旧的DOS系统或其他东西,其中所有存在的都是控制台。除了停机之外,你不能真正关闭终端,因为那就是那里的全部。这个例子至少应该说明像C这样的语言不能保证这个功能。

答案 5 :(得分:-3)

那么,9Ake,你需要使用void main()而不是int main(void) 你需要调用getch();在main()内的程序结束时运行,并在程序的最顶部包含标题'conio.h'。