Логгер для стандартного ввода - PullRequest
1 голос
/ 02 сентября 2011

Для отладки обработки внешнего процесса в Emacs мне нужна оболочка, которая регистрирует весь поток сообщений.

Таким образом, Emacs отправляет строку в stdin оболочки, регистрирует ее и отправляет во внешний процесс.Затем обратно внешний процесс отправляет вывод, входит в оболочку и отправляет Emacs.

Мои знания Expect малы, поэтому я задаю вопрос.Может быть, уже существуют стандартные инструменты для этой цели?

Как реализовать stdin, stdout обертку? не является ответом на мой вопрос !!

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

В этом примере я использую палочку, но в ограниченной форме (терминал настроен в каноническом режиме, поэтому некоторые символы не допускаются):

#!/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 голос
/ 04 сентября 2011

Я не понимаю ситуацию.

Все ли взаимодействие происходит через stdin и stdout? Тройник (1) http://unixhelp.ed.ac.uk/CGI/man-cgi?tee не соответствует всем вашим требованиям?

...