mc #5462(2008/01/26 07:42 GMT) [ Common Lisp ] Rating1/1=1.00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
(require :kmrcl) ;kmrcl:command-output実行例 ;; 成功 (multiple-value-bind (out error code) (kmrcl:command-output "~A" "date") (format t "OUT:~A ~%ERROR: ~A~%STAT: ~D~%" out error code)) ;=> ;OUT:2008年 1月 26日 土曜日 16:40:07 JST ; ;ERROR: ;STAT: 0 ;; エラー (multiple-value-bind (out error code) (kmrcl:command-output "~A" "foo") (format t "OUT:~A ~%ERROR: ~A~%STAT: ~D~%" out error code)) ;=> ;OUT: ;ERROR: /bin/sh: foo: not found ; ;STAT: 127
Rating1/1=1.00-0+
[ reply ]
mc
#5462()
[
Common Lisp
]
Rating1/1=1.00
いくつか処理系の差異を吸収するラッパーがありますが、KMRCLの
command-outputが今回のお題にはぴったりな気がするので紹介してみます。
この関数はコマンドを引数として、実行結果を多値で返します。
内容は、(1)実行結果の標準出力、(2)エラーの場合、エラー出力、(3)リターンコード
となっています。
(require :kmrcl) ;kmrcl:command-output実行例 ;; 成功 (multiple-value-bind (out error code) (kmrcl:command-output "~A" "date") (format t "OUT:~A ~%ERROR: ~A~%STAT: ~D~%" out error code)) ;=> ;OUT:2008年 1月 26日 土曜日 16:40:07 JST ; ;ERROR: ;STAT: 0 ;; エラー (multiple-value-bind (out error code) (kmrcl:command-output "~A" "foo") (format t "OUT:~A ~%ERROR: ~A~%STAT: ~D~%" out error code)) ;=> ;OUT: ;ERROR: /bin/sh: foo: not found ; ;STAT: 127Rating1/1=1.00-0+
[ reply ]