[C#] Process.startがexit code 2で終了
問題
Process.startで外部プログラムを実行した際に、期待した動作をせずにexit code 2で終了してしまう(例外などは出ない)。
原因
コマンドライン引数として実行ファイルのパスを渡しているのだが、そのパスに空白が入っていたこと。コマンドライン引数は空白以降は別の引数と見なされてしまう。
解決策
コマンドライン引数は""で囲むと空白で区切られなくなる。"を文字列とするには""を頭につける必要がある。
System.Diagnostics.ProcessStartInfo psi =
new System.Diagnostics.ProcessStartInfo();
psi.FileName = "python.exe";
psi.Arguments = @"""C:\my folder\test.py"""; //ここ
System.Diagnostics.Process.Start(psi);
最後に
こんな平凡なミスでハマってしまった、、、
自分でフォルダ名付けるときは空白は入れないが、visual studioのインストール先が空白入りなんだよな
最新記事
すべて表示現象 C#で下記のコードでタイトルのコンパイルエラーが発生。 このエラーは、例えばclassがprivateなのにメソッドがpublicといった場合に発生するのだが、この例ではどちらもpublic public class MyClass{ public...
Comments