CLISP:STDOUT、STDERR、およびSHELLコマンドからRETCODEを返す -- shell フィールド と lisp フィールド と common-lisp フィールド と clisp フィールド 関連 問題

CLISP: Returning stdout, stderr, and retcode from a shell command












2
vote

問題

日本語

私はいくつかのスクリプティングに共通のLispを使用していて、 <コード> run-program シェルコマンドを実行します。 (output error returncode) の形式でリストを取得するには、出力を操作しようとしていますが、 run-program からの出力またはreturncodeのどちらかを取得できます。

引数ここでは、 :output のみを与えるだけです( :error はありません):

3つすべてを得る方法はありますか?このようなもの:

<事前> <コード> (setf retcode (my-special-cmd "ls" :output stream1 :error stream2)) (print (list stream1 stream2 retcode))
英語

I am using Common Lisp for some scripting and wanted to have run-program execute shell commands. I have been trying to manipulate the output to get a list in the form (output error returncode) but I can only get either the output or the returncode from run-program.

The arguments here only give you :output (there is no :error):

Is there a way of getting all three? Something like this:

(setf retcode (my-special-cmd "ls" :output stream1 :error stream2)) (print (list stream1 stream2 retcode)) 
</div
           
 
 

回答リスト

3
 
vote
vote
ベストアンサー
 

<コード> 返品複数の値。 リンクされた質問で説明されているように、それらを処理できます。

あなたが言う言葉:

if:streamが:入力または:出力、Lispストリームが返されます。 IF:STREAMが両方の場合に指定されています。入力と:出力は、関数ext:make-pipe-io-streamの場合、3つのLispストリームが返されます。

あなたが必要とするものは

です <事前> <コード> (EXT:MAKE-PIPE-IO-STREAM "ls")

または

<事前> <コード> (ext:run-program "ls" :input :stream :output :stream)

その後、返されたストリームからコマンド出力を取得する必要があります。ただし、この場合は終了コードが失われます。

 

run-program returns multiple values. You can handle them as explained in the linked question.

The doc you link to says:

If :STREAM was specified for :INPUT or :OUTPUT, a Lisp STREAM is returned. If :STREAM was specified for both :INPUT and :OUTPUT, three Lisp STREAMs are returned, as for the function EXT:MAKE-PIPE-IO-STREAM.

Thus what you need is either

(EXT:MAKE-PIPE-IO-STREAM "ls") 

or

(ext:run-program "ls" :input :stream :output :stream) 

Then you will have to read from the streams returned to get the command output. However, in this case you will lose the exit code.

</div
 
 

関連する質問

-2  一般的なLispの条件を満たすリストのセットとサブセットのすべての可能な組み合わせを得るにはどうすればよいですか  ( How can i get all possible combinations of sets and subsets of a list that satis ) 
L =(ABCD)の要素のリストについては、要素の字頭順序を満たす要素を可能にするすべての組み合わせを生成する(A&lt; a <; ...)すべての組み合わせを生成する。 例えば、L =(ABCD)ウェル出力(A)、(B)、(C)、(D)、(AB)、(BC...

0  CLISPのトラブルシューティングエラーのイントロガイド  ( Intro guide to troubleshooting errors in clisp ) 
私はLispに新しい、CygwinのCLISPで働いています。問題があるときは、このようなものが見えます <事前> <コード> *** - SYSTEM::READ-EVAL-PRINT: variable DB.CLISP has no value The ...

1  この単純なLisp関数はなぜエラーをスローしますか?  ( Why does this simple lisp function throw an error ) 
私はより大きなスクリプトからこの関数を隔離し、 https:// www. jdoodle.com/execute-clisp-online/ 。スローされたエラーがあるたとえそれは私が明らかに明白な何かを欠いていない限り、それはLispの規則に従っているよう...

2  Lisp - ネストされたリストの平均長さを取得する方法は?  ( Lisp how to get the average length for nested lists ) 
私は問題があります。このリストから平均長さを取得する必要があります。 const Security = ({ username, password }) => <span>...</span>; const PersonalDetails = ({ first...

1  OSエラーからerrnoを取得する方法  ( How to retrieve errno from an os error ) 
この質問は2つの部分に分けられます。 パート1: 私はこれを実行します... <事前> <コード> 1 (handler-case (posix:kill 1 0) 2 (error (the-condition) (prin1 (type-of t...

2  OS XでCLISP-2.49でコンパイルされたLispプログラムの実行  ( Running compiled lisp program with clisp 2 49 on os x ) 
OS X 10.10 Yosemiteの実装として、GNU CLISP-2.49(ソースからコンパイルされた)を使用して、共通LISPでプログラミングを開始しました。私は以下のように単純な「ハローワールド」プログラムを書いた: <事前> <コード> (EXT...

1  プロンプトで行を読んだ後の改行状態は更新されていないようです  ( Newline state after reading a line with a prompt seems not be updated ) 
私はGNU CLISPを使用しています。このプログラム: <事前> <コード> (read-line) (format t "~&<prompt RESPONSE") のようなものを出力します。 <事前> <コード> my input... <prompt...

5  共通LISPでリストと原子を区別する  ( Differentiate between a list and an atom in common lisp ) 
私は、私がリスト内の原子数を返すだけであることを私の基本的なCLISP機能を持っています。私が持っている問題は、リスト内のリスト内のリストを1要素として見るのではなく、リスト内のアトムの原子を増分する必要があります。 本当の質問私は要素がリストであるかのどちら...

-1  リストに少なくとも1つのNIL要素が含まれているかどうかを確認してください。  ( Check if a list contains at least one non nil element ) 
タイトルがほとんどすべてを伝えます。 のようなものを探しています <事前> <コード> (atleastonenonnil '(nil nil nil nil '(A B C))) => T 私は再帰的な方法でそれをすることができましたが、私はできません...

0  一般的なLisp - CH 02、コードエラー?  ( Common lisp ch 02 code error ) 
私は私のFedora-13マシンにCLISPをインストールしました。 CLISPインタプリタでは、次のように入力しました。 <事前> <コード> (defun ask-num () (format t "Please enter a number.")...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有