3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(.Net)アプリケーションの終了コードを返す方法、取得する方法

.Net のコンソールアプリケーションでOSに終了コードを返す方法です。

いくつか有るようですが、一番オーソドックスなのはエントリポイントであるMainメソッドの戻り値を指定する方法です。

ただ、Visual Studio で新規にコンソールアプリケーションのProject作成すると、Main メソッドの戻り値が void になっているので、これを int 型に直す必要があります。

こんな感じです。(C#)

class Program

{

static int Main(string[] args)

{

return 1;

}

}

また、Environment.Exit メソッドを使う方法もあるようです。引数に終了コードを指定するようですね。

この場合、プロセスを殺すとともにOSに終了コードを渡せます。(Main メソッドの戻り値の型が void でも使えるみたいです。)

Environment.Exit(1);

さらに、Environment.ExitCode プロパティに終了コードを設定するという方法もあるようですね。

Environment.ExitCode = 1;

return;

参考:

@IT:コンソール・アプリケーションで終了コードを返すには?

逆に、.Net アプリ自身から起動したプロセスの終了コードを取得こともできるようです。

Process オブジェクトを使ってアプリケーション起動後、WaitForExitメソッドで終了まで待ち、Process.ExitCode プロパティで起動したプロセスの終了コードを取得できます。

具体的にはこんな感じ。(C#)

using System.Diagnostics;

 

//プロセスオブジェクト生成

Process proc = new Process();

// 起動するアプリケーションを設定する

proc.StartInfo.FileName = "test.exe";

// 起動する

proc.Start();

//起動したプロセスが終了するまで待つ。

proc.WaitForExit();

//終了コード取得

int iExitCode = proc.ExitCode;

参考:

@IT:ほかのアプリを実行して終了コードを得るには?

@IT:.NET TIPS ほかのアプリケーションを実行してその終了を待つには? Process.WaitForExitメソッドでプロセス終了を待つ説明が書いてます。

なお、バッチファイル内で直前の処理の終了コードを参照する方法はバッチファイルで直前のコマンドの終了コード判定で書いてます。