Thank you so much Jerry. I should have read though the man page more carefully. The available online cscope tutorials never mentioned the line-oriented mode.
On Sat, Jan 4, 2014 at 1:35 AM, Jerry Hill <malaclyp...@gmail.com> wrote: > On Fri, Jan 3, 2014 at 9:44 PM, Beinan Li <li.bei...@gmail.com> wrote: > > But some console programs have their own shell or ncurse-like CUI, such > as > > cscope. > > So I figured that I need to first subprocess.popen a bidirectional pipe > and > > send command through stdin and get results from stdout and stderr. > > > > But in such a case I found that communicate('cmd') will freeze. > > Right. communicate() waits for the subprocess to end, and the > subprocess is still waiting for you to do something. Instead, you'll > need to read() and write() to the subprocess' stdin and stdout > attributes, probably something like this (untested): > > def OnClickBtn(self, event): > print('OnClickBtn') > self.subProc.stdin.write('symbolName\n') > print(self.subProc.stdout.read()) > > It looks like cscope has both a screen-oriented mode and a line-based > mode. When you're working with a subprocess like this, you're going > to want to be in the line-based mode, so you'll probably want to add > -l or -L to your command line. > > -- > Jerry >
-- https://mail.python.org/mailman/listinfo/python-list