0

私のプロジェクトのサブプロセス管理を簡素化するために、Clojure ライブラリに取り組んでいます。基本的に、JavaProcessBuilderをより Clojuric な方法でラップします。私がやりたいことの 1 つは、欠落しているコマンドをキャッチすることです。つまり、ユーザーがthis-command-not-foundシェル コマンドとして使用したい場合、私のコードは例外をスローする必要があります。

ただし、これを行うのは難しい、または不可能のようProcessBuilderです。何らかの方法でユーザーを取得し、$PATHそこを検索して有効なコマンドを確認する必要がありますか、それともより良い方法がありますか?

編集:これは、プロセスを開始せずに行う必要があります-以下の私のコメントを参照してください。

4

3 に答える 3

2

はい、もちろん、検索するよりも良い方法があり$PATHます。ユーザーが実行するように要求したコマンドを実行するだけです。$PATHユーザーが使用できるシェルのセットには制限がなく、ユーザーが検索するための概念をシェルに持たせる必要がないため、ProcessBuilder やその他のメカニズムを使用しても、よりスマートなソリューションはありません。あなたにできることは、ユーザーが望むことをできるように最善を尽くすことだけです。エラーが発生した場合は、ユーザーに知らせてください。

于 2013-02-05T06:17:52.133 に答える
0

から取得ProcessProcessBuilder.start()ます。

Process.getErrorStream()次に、Windowsチェックから読み取ることができます

'this-command-not-found' is not recognized as an internal or external command, operable program or batch file.

于 2013-02-05T00:51:33.370 に答える
0

whichコマンドが存在するかどうかを知るには、おそらく ProcessBuilder を使用してコマンドを実行できます。これはwhich、システム上に存在する必要があります。

于 2013-02-05T06:11:36.093 に答える