読者です 読者をやめる 読者になる 読者になる

call-processで標準出力と標準エラー出力を分離する

emacs

call-processのドキュメントには書いているんだけど
試したことがなかったので試してみました. BUFFER
引数にリストを与えるというだけのものです。


テストのために使うプログラムは以下のとおりです。

#!perl
use strict;
use warnings;

print "This message is printed in stdout\n";
warn  "This message is printed in stderr\n";

Elispは次の通り

(call-process "perl" nil (list (get-buffer-create "*test-stdout*") "~/tmp/stderr.out") t
              (expand-file-name "~/junk/gomi/call_process_test.pl"))

listのところに '(シングルクォート)を使うとエラーになるんだけど、
Elispだからですかね?


確認

'*test-stdout*'の内容は "This message is printed in stdout"と
なっており, stderr.outの内容は以下のとおりです

  % cat ~/tmp/stderr.out
  This message is printed in stderr

最後に

call-processを利用する際の標準出力と標準エラーを分離する方法を
示しました。あんまり利用例がなくてどうやってると思って試して
みました。よくわからない点としては, 標準出力にはバッファを
指定して、標準エラー出力にはファイルを指定するというところ
ですかね。分けるというか一方を捨てたいということはあると
思うので、そのときは使えそうですかね。