=== Kazuhiko Deguchi <deguchi@...> さんが書かれた
=== <20020403135943.5D11.DEGUCHI@...> にて
> CVSの"commit"コマンドをPerlのWrapperスクリプト経由で動かしています。
> コマンドを実行するときに、パイプを作ってコマンドを実行します。
> CVSが標準出力に表示するメッセージをパイプ経由で読み込み、
> このWrapperスクリプトのメッセージとして出力しようとしています。
$|=1していないのがちょっと気になりますが、それよりCVSを起動する
時の標準出力がttyではないので、viがttyのコントロールをしようと
してうまくできすに失敗している可能性が高いと思います。
だとすれば、ptyで連結して実行しなければいけないでしょう。Perl5
ならばIO::Ptyです。でもきっとrawモードあたりを触るため、それを
Perl側で継承してあげなければならないので、面倒です。
そこでviの替わりにPerl側と通信するようなものを動かすようにして
おいて、Perl側で改めてviをsystem()等で動かすのはどうでしょう。
CVSの入出力はPerl側でフックしている(できる)ので、こちらの方が
簡単かもしれません。
以上の内容は予想でしかないので、外していたらごめんなさいです。
(* SEKI Masatoshi / zazel@..."jp" *)
(* Would you hold my hand? Softly, let's linger. *)