簡體   English   中英

如何使用退出功能使交流控制台程序退出?

[英]how to make a c console program exit with exit function?

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

void main(){

    exit(0);

}

這是我在c中的代碼,我如何使控制台退出?我嘗試使用exit函數,但似乎不起作用

exit導致您的程序退出,而不是您從中運行它的外殼退出。 您的程序等效於:

int main(void)
{
  return 0;
}

您可能想研究一下kill(2)

編者注: main應該返回int ,而不是void

您不能使用exit關閉父應用程序。 Exit只會導致您的程序退出。

如果要退出父應用程序:

假設你想退出你從啟動該進程的控制台,你必須得到父進程ID( getppid ),然后發送殺死信號。

在Windows中,您必須通過調用Process32First和Process32Next復制getppid的行為。 殺死成為TerminateProcess

您不能...程序以exit(0)結尾; 返回退出代碼給調用者...通常是一個命令解釋器外殼...通常在終端中運行

如果終端中的程序終止,則終端將關閉。...您可以直接在終端中運行程序,也可以使用Shell僅執行一個命令

似乎無法追蹤線索,但是幾年前,我嘗試通過在usenet論壇中建議system("exit") (當然不起作用system("exit")來回答這個問題。 但是當時(1990年代中期)的正確答案是發送軟件中斷以重新啟動 保護模式DOS(在Windows窗口中執行Dos)將攔截它並關閉該窗口。

如果希望程序始終在退出時關閉 ,則可以編輯快捷方式屬性。

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

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

不知道這是否行得通,但這是第一件事。 您可以用WM_CLOSE代替WM_DESTROY。

為了退出控制台,您必須進行系統調用。 這將是

#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_(命令)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM