Форум сайта python.su
Если ты его используешь тогда не пойму в чем проблема. Отправь ей строку ввода(write()) когда она ее ожидает, а потом считывай ответ.
Офлайн
проблема в том что я не знаю когда она ожидает ввода, точнее когда точно заклончится ее ответ - скажем что-то вывелось я начинаю считывать как только считывание доходит до конца т.е. текст вывода кончается и пытается считать уже пустую строку куда Октавия ожидает ввода то происходит блокировка - решение либо таймаут либо перед считыванием просто вводить свою последовательность символов(типа как признак конца строки) и когда при считывании доходит до нее прекращать считывание - но я думал может есть какой более изящный способ возможно есть штатные средства для такой ситуации
Офлайн
а под винду есть аналоги expect-а и иже с ним?
Офлайн
koderА как можно размер буфера pipe установить в минимальное значение?
1)Под какой ОС ты это делаеш - если под линукс, то все должно получатся
- там размер буфера pipe 4к - просто ситема может ждать определенного уровня заполнения буфера.
Что-бы совсем все номано было нужно размер буфера этому pipe выставить маленьким.
import subprocess
cmd='echo YOUPASSWORD|sudo -S tcpdump -qnippp0 greater 1200'
p=subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
for str in p.stdout: print str
import pexpect
cmd='sudo -S tcpdump -qnippp0 greater 1200'
child = pexpect.spawn (cmd)
child.expect (':')
child.sendline ('YOUPASSWORD')
while True:
child.expect ('\n')
print child.before
Отредактировано (Авг. 18, 2010 13:39:50)
Офлайн