#include<stdio.h>
#include<stdlib.h>
void main(){
exit(0);
}
これは、c の私のコードです。どうすればコンソールを終了できますか??exit 関数を使用しようとしましたが、機能しないようです
#include<stdio.h>
#include<stdlib.h>
void main(){
exit(0);
}
これは、c の私のコードです。どうすればコンソールを終了できますか??exit 関数を使用しようとしましたが、機能しないようです
で親アプリケーションを閉じることはできませんexit
。Exit
あなたのプログラムだけを終了させます。
親アプリケーションを終了する場合:
Kill(2)
UNIX システムでは、と組み合わせて使用できますgetppid(2)
。
Windowsでは、でそれを達成できますTerminateProcess
。GetParentProcessの方法の例を次に示します。しかし、Windowsでは、できるかどうかわかりません。親プロセスを強制終了する権利はないと思います。ここを見てください:http://msdn.microsoft.com/en-us/library/windows/desktop/ms684880(v=vs.85).aspx
Windowsプロセスを終了する権限を取得できるようです:
このナレッジベースの記事では、その方法について説明しています。最初
SeDebugPrivilege()
に を呼び出してプロセスを終了する権限を取得OpenProcess()
し、PROCESS_TERMINATE
フラグを指定して呼び出して終了するプロセスのハンドルを取得し、最後に を呼び出しTerminateProcess()
てプロセスを終了します。
編集:
[システムがサブシェルを起動するため機能しません]system
を呼び出すだけで実現できるようですsystem("exit");
。
コンソールを終了するには、システム コールを実行する必要があります。そうなる
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("taskkill/IM cb_console_runner.exe");
{
ここで、cb_console_runner.exe はプロセス名です。
スレッドを追跡することはできませんが、何年も前に、usenet フォーラムでこの質問に提案して答えようとしましたsystem("exit")
(もちろんうまくいきません)。しかし、当時 (1990 年代半ば) の正解は、ソフトウェア割り込みを送信して再起動することでした。プロテクト モードの DOS (Windows ウィンドウでの Dos) は、それを傍受してウィンドウを閉じます。
exit で常にプログラムを終了する場合は、ショートカット プロパティを編集できます。