次の方法で共有


abort

現在のプロセスを中止し、エラー コードを返します。

注意

テスト シナリオまたはデバッグ シナリオの場合を除き、この方法を使用して Windows ストア アプリをシャットダウンしないでください。プログラムや UI によって Windows ストア アプリを終了する方法は、「Windows 8 アプリの認定の要件」により禁止されています。詳細については、「アプリケーションのライフサイクル (Windows ストア アプリ)」を参照してください。

void abort( void );

戻り値

abort は、呼び出し元のプロセスに制御を返しません。 既定では、中止シグナル ハンドラーが確認され、それが設定されている場合は SIGABRT が発生します。 その後 abort は、現在のプロセスを終了し、親プロセスに終了コードを返します。

解説

Microsoft 固有の仕様 →

既定では、デバッグ ランタイム ライブラリを使用してアプリをビルドしている場合、abort ルーチンによってエラー メッセージが表示された後、SIGABRT が発生します。 コンソール モードで動作しているコンソール アプリの場合は、STDERR にメッセージが送信されます。 ウィンドウ モードで動作している Windows デスクトップ アプリとコンソール アプリでは、メッセージ ボックスにメッセージが表示されます。 メッセージを抑制するには、_set_abort_behavior を使用して _WRITE_ABORT_MSG フラグをクリアします。 表示されるメッセージは、使用しているランタイム環境のバージョンによって異なります。 Visual C++ の最新バージョンを使用してビルドされたアプリケーションでは、次のようなメッセージが表示されます。

R6010

- abort() has been called

C ランタイム ライブラリの以前のバージョンでは、次のメッセージが表示されました。

"This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information."

プログラムをデバッグ モードでコンパイルしている場合、メッセージ ボックスに [中止][再試行]、または [無視] のオプションが表示されます。 ユーザーが [中止] をクリックすると、プログラムが即座に終了し、終了コード "3" が返されます。 ユーザーが [再試行] をクリックすると、just-in-time デバッグが有効な場合はデバッガーが起動してデバッグが開始します。 ユーザーが [無視] をクリックすると、abort によって通常の処理が続けられます。

リテール ビルドとデバッグ ビルドのどちらの場合も、abort は次に、中止シグナル ハンドラーが設定されているかどうかを確認します。 既定以外のシグナル ハンドラーが設定されている場合、abortraise(SIGABRT) を呼び出します。 SIGABRT シグナルに中止シグナル ハンドラー関数を関連付けるには、signal 関数を使用します。 ハンドラー関数では、カスタム動作 (リソースのクリーンアップや情報のログ記録など) を実行し、独自のエラー コードを発行してアプリを修了できます。 カスタムのシグナル ハンドラーが定義されていない場合、abort で SIGABRT 通知が発生しません。

既定では、デスクトップ アプリやコンソール アプリの非デバッグ ビルドで、abort は次に、Windows のエラー レポート機構 ( ワトソン博士) を起動してエラーを Microsoft に報告します。 この動作は、_set_abort_behavior を呼び出し、_CALL_REPORTFAULT フラグを設定するかマスクして、有効または無効にすることができます。 フラグが設定されていると、Windows でメッセージ ボックスが開き、「問題が発生したため、プログラムが正しく動作しなくなりました」などのテキストが表示されます。ユーザーは [デバッグ] をクリックしてデバッガーを開始するか、[プログラムの終了] をクリックすることでオペレーティング システムで定義されているエラー コードを発行してアプリを終了できます。

Windows のエラー レポート ハンドラーが起動しない場合、abort_exit を呼び出し、終了コード "3" を発行してプロセスを終了した後、親プロセスまたはオペレーティング システムに制御を戻します。 _exit は、ストリーム バッファーをフラッシュせず、atexit/_onexit 処理を行いません。

CRT デバッグの詳細については、「CRT のデバッグ技術」を参照してください。

End Microsoft 固有

必要条件

ルーチン

必須ヘッダー

abort

<process.h> または <stdlib.h>

使用例

次のプログラムはファイルを開こうとしますが、試みに失敗すると中止されます。

// crt_abort.c
// compile with: /TC
// This program demonstrates the use of
// the abort function by attempting to open a file
// and aborts if the attempt fails.

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

int main( void )
{
    FILE    *stream = NULL;
    errno_t err = 0;

    err = fopen_s(&stream, "NOSUCHF.ILE", "r" );
    if ((err != 0) || (stream == NULL))
    {
        perror( "File could not be opened" );
        abort();
    }
    else
    {
        fclose( stream );
    }
}
  

同等の .NET Framework 関数

使用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

関連項目

abort の使用

abort 関数 (C)

プロセス制御と環境制御

_exec、_wexec 系関数

exit、_exit

raise

signal

_spawn 系関数と _wspawn 系関数

_DEBUG

_set_abort_behavior