2011-09-02 89 views
1

調試Emacs的外部進程處理我需要包裝器來記錄所有消息流。stdin stdout的記錄器

因此Emacs發送字符串到包裝stdin,包裝器記錄它併發送到外部進程。然後返回外部進程發送輸出,包裝器登錄併發送給Emacs。

我的期望knowlage很小,所以我問問題。可能已經存在用於此目的的標準工具?

How to implement a stdin, stdout wrapper?不回答我的問題!

回答

1

這個例子讓我的魔杖,但在有限的形式(終端規範模式下配置,所以一些字符代碼不容許):

 
#!/usr/bin/env expect 

set in [open in.log w] 
set out [open out.log w] 

log_user 0 
set stty_init {-echo} 
exp_internal 1 

# spawn sort 
spawn /bin/prog 
set proc_id $spawn_id 

expect { 
    -i $user_spawn_id -re . { 
     puts -nonewline $in $expect_out(buffer) 
     send -i $proc_id $expect_out(buffer) 
     exp_continue 
    } eof { 
     send -i $proc_id \x04 
     sleep 1 
     send -i $proc_id \x04 
     expect -i $proc_id -re . { 
      puts -nonewline $out $expect_out(buffer) 
      send_user $expect_out(buffer) 
      exp_continue 
     } eof { } 
    } 
    -i $proc_id -re . { 
     puts -nonewline $out $expect_out(buffer) 
     send_user $expect_out(buffer) 
     exp_continue 
    } eof { } 
} 
wait 
1

我不瞭解情況。

是否通過stdin和stdout進行交互? tee(1)http://unixhelp.ed.ac.uk/CGI/man-cgi?tee是否不符合您的所有要求?

+0

我只可以說你不明白...看看http://www.nist.gov/el/msid/expect.cfm我找了已開發的解決方案,但似乎需要編寫自己的。 – gavenkoa