[英]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
只會導致您的程序退出。
如果要退出父應用程序:
在UNIX系統上,可以將Kill(2)
與getppid(2)
結合使用。
在Windows上,您可以使用TerminateProcess
實現。 這是有關如何GetParentProcess的示例。 但是在Windows上,我不確定是否可以,我認為您無權終止父進程。 在這里查看: http : //msdn.microsoft.com/zh-cn/library/windows/desktop/ms684880(v=vs.85).aspx
看來您可以獲得終止Windows進程的特權:
這篇知識庫文章描述了如何做到這一點。 首先,您調用
SeDebugPrivilege()
獲取終止進程的特權,然后使用PROCESS_TERMINATE
標志調用OpenProcess()
SeDebugPrivilege()
以獲取要終止的進程的句柄,然后最終調用TerminateProcess()
終止該進程。
編輯: [由於系統啟動子外殼而無法工作]看來,您可以通過簡單地調用system("exit");
與system
來實現system("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是進程名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.