1
#include<stdio.h>
#include<stdlib.h>

void main(){

    exit(0);

}

这是我在 c 中的代码我怎样才能让控制台退出?我尝试使用退出功能,但似乎它不起作用

4

7 回答 7

3

exit导致您的程序退出,而不是您运行它的 shell。您的程序相当于:

int main(void)
{
  return 0;
}

你可能想调查一下kill(2)

编者按:main应该返回int,不是void

于 2013-07-14T15:57:22.300 回答
2

您无法使用 关闭父应用程序exitExit仅导致您的程序退出。

如果要退出父应用程序:

于 2013-07-14T16:45:33.753 回答
1

假设您试图退出启动进程的控制台,您必须获取父进程 id ( getppid),然后发送终止信号。

getppid在 Windows 中,您必须通过调用Process32First和 Process32Next来复制行为。杀变成TerminateProcess

于 2013-07-14T16:01:49.987 回答
0

你不能...程序以 exit(0) 结束;将退出代码返回给调用者……通常是命令解释器外壳……通常在终端内运行

如果其中的程序终止,终端将关闭....您可以直接在终端内运行程序,或使用 shell 只执行一个命令

于 2013-07-14T16:03:21.363 回答
0

似乎无法追踪该线程,但几年前我试图通过建议在usenet论坛上回答这个问题system("exit")(当然,这不起作用)。但当时(1990 年代中期)的正确答案是发送软件中断以重新启动。保护模式 DOS(Windows 窗口中的 Dos)会拦截它并关闭窗口。

如果您希望程序始终在退出时关闭,您可以编辑快捷方式属性。

于 2013-07-14T16:18:02.603 回答
0
#define _WIN32_WINNT 0x500
#include <windows.h>

...
PostMessage(GetConsoleWindow(), WM_CLOSE, 0, 0);

不确定这是否有效,但这是首先想到的。您可以用 WM_CLOSE 代替 WM_DESTROY。

于 2013-07-14T16:21:20.560 回答
0

为了从控制台退出,您必须进行系统调用。这将是

#include <stdio.h>
#include <stdlib.h>

int main()
{
    system("taskkill/IM cb_console_runner.exe");
{

这里,cb_console_runner.exe 是进程名。

资源:http://en.wikipedia.org/wiki/Kill_(command)

于 2014-04-12T16:51:29.860 回答