As a continuation from my previous question on building interactive option menus in pexpect, print statements within an interact input filter do not get sent to stdout until after the interact is complete.
The docs don't seem to contain an equivalent method to send_user from expect, is there any workaround to send output to the user, not to the spawned child from within pexpect's interact method?
bash-4.1$ cat testInputFilter.py
import pexpect
def input_filter(s):
if s == b'\003':
print('you pushed ctrl+c')
return b'\r: r u going to kill me? press ctrl-d to exit!\r'
elif s == b'\004':
print('you pushed ctrl+d')
return b'\r: ok, bye; exit\r'
else:
return s
proc = pexpect.spawn('bash --norc')
proc.interact(input_filter=input_filter)
proc.expect(pexpect.EOF)
bash-4.1$ ~/python/python36/bin/python3.6 testInputFilter.py | tee inputTest.txt
bash-4.1$
bash-4.1$ : r u going to kill me? press ctrl-d to exit!
bash-4.1$
bash-4.1$ : ok, bye; exit
exit
you pushed ctrl+c
you pushed ctrl+d
bash-4.1$