top of page

[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#] アクセシビリティに一貫性がありません

現象 C#で下記のコードでタイトルのコンパイルエラーが発生。 このエラーは、例えばclassがprivateなのにメソッドがpublicといった場合に発生するのだが、この例ではどちらもpublic public class MyClass{ public...

Comments


カテゴリ

あなたの買い物をサポートする
アプリ Shop Plan

iphone6.5p2.png

​いつ何を買うかの計画を立てられるアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

靴を大切にしよう!靴管理アプリ SHOES_KEEP

納品:iPhone6.5①.png

靴の履いた回数、お手入れ回数を管理するアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

「後で読む」を忘れないアプリ ArticleReminder

気になった​Webサイトを登録し、指定時刻にリマインダを送れるアプリです

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png
bottom of page