如何使用退出功能使c控制台程序退出? #包括 #包括 void main(){ 出口(0); }

如何使用退出功能使c控制台程序退出? #包括 #包括 void main(){ 出口(0); },c,C,这是我在c语言中的代码如何使控制台退出?我曾尝试使用退出功能,但它似乎不起作用退出导致程序退出,而不是从运行它的shell退出。您的程序相当于: #include<stdio.h> #include<stdlib.h> void main(){ exit(0); } 你可能想调查一下 编辑说明:main应该返回int,而不是voidexit导致程序退出,而不是运行它的shell。您的程序相当于: #include<stdio.h> #inclu

这是我在c语言中的代码如何使控制台退出?我曾尝试使用退出功能,但它似乎不起作用

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

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

void main(){

    exit(0);

}
你可能想调查一下

编辑说明:
main
应该返回
int
,而不是
void

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

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

void main(){

    exit(0);

}
你可能想调查一下


编辑说明:
main
应返回
int
,而不是
void

如果您试图退出启动进程的控制台,则必须获取父进程id(),然后发送信号


在Windows中,您必须通过调用和Process32Next来复制
getppid
的行为。Kill变为

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


在Windows中,您必须通过调用和Process32Next来复制
getppid
的行为。Kill变为

您不能…程序以exit(0)结束;将exitcode返回给调用者…通常是命令解释器shell…通常在终端内部运行


如果终端中的程序终止,终端将关闭……您可以直接在终端内运行程序,或者使用shell仅执行一个命令,但不能执行。……程序以退出(0)结束;将exitcode返回给调用者…通常是命令解释器shell…通常在终端内部运行


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

似乎无法跟踪线程,但多年前,我在usenet论坛上试图通过建议
系统(“退出”)
来回答这个问题(当然,这不起作用)。但当时(20世纪90年代中期)的正确答案是发送软件中断以重新启动。受保护模式的DOS(Windows窗口中的DOS)将拦截它并关闭窗口


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

似乎无法跟踪线程,但几年前,我在usenet论坛上试图通过建议
系统(“退出”)
来回答这个问题(当然,这不起作用)。但当时(20世纪90年代中期)的正确答案是发送软件中断以重新启动。受保护模式的DOS(Windows窗口中的DOS)将拦截它并关闭窗口

int main(void)
{
  return 0;
}
如果希望程序始终在退出时关闭,可以编辑快捷方式属性。

\define\u WIN32\u WINNT 0x500
int main(void)
{
  return 0;
}
#包括 ... PostMessage(GetConsoleWindow(),WM_CLOSE,0,0);
我不确定这是否有效,但这是我想到的第一件事。您可以将WM_CLOSE替换为WM_DESTROY。

\define\u WIN32\u WINNT 0x500
#包括
...
PostMessage(GetConsoleWindow(),WM_CLOSE,0,0);

我不确定这是否有效,但这是我想到的第一件事。您可以用WM\u CLOSE代替WM\u DESTROY。

您不能使用退出关闭父应用程序<代码>退出仅导致程序退出

如果要退出父应用程序:

  • 在UNIX系统上,可以结合使用

  • 在windows上,您可以使用。下面是一个关于如何使用的示例。 但在Windows上,我不确定您是否可以,我认为您无权终止父进程。看这里:

    您似乎可以获得终止windows进程的权限:

    描述如何执行此操作。首先调用
    SeDebugPrivilege()
    以获得终止进程的权限,然后使用
    PROCESS\u terminate
    标志调用以获取要终止的进程的句柄,最后调用以终止进程

    编辑: [由于系统启动一个子shell而无法工作]似乎您可以通过简单地调用
    系统(“exit”)来实现它


您不能在退出时关闭父应用程序<代码>退出仅导致程序退出

如果要退出父应用程序:

  • 在UNIX系统上,可以结合使用

  • 在windows上,您可以使用。下面是一个关于如何使用的示例。 但在Windows上,我不确定您是否可以,我认为您无权终止父进程。看这里:

    您似乎可以获得终止windows进程的权限:

    描述如何执行此操作。首先调用
    SeDebugPrivilege()
    以获得终止进程的权限,然后使用
    PROCESS\u terminate
    标志调用以获取要终止的进程的句柄,最后调用以终止进程

    编辑: [由于系统启动一个子shell而无法工作]似乎您可以通过简单地调用
    系统(“exit”)来实现它


要退出控制台,必须进行系统调用。会的

#define _WIN32_WINNT 0x500
#include <windows.h>

...
PostMessage(GetConsoleWindow(), WM_CLOSE, 0, 0);
#包括
#包括
int main()
{
系统(“taskkill/IM cb_console_runner.exe”);
{
这里,cb_console_runner.exe是进程名


资源:

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

#define _WIN32_WINNT 0x500
#include <windows.h>

...
PostMessage(GetConsoleWindow(), WM_CLOSE, 0, 0);
#包括
#包括
int main()
{
系统(“taskkill/IM cb_console_runner.exe”);
{
这里,cb_console_runner.exe是进程名


参考资料:

我认为
kill
只适用于Unix。询问“控制台”而不是“shell”意味着Windows。你知道如何在Windows上操作吗?不知道。我只是认为