IPC
brianc at temple.edu
brianc at temple.edu
Tue Jul 27 15:08:52 EDT 2004
More information about the Python-list mailing list
Tue Jul 27 15:08:52 EDT 2004
- Previous message (by thread): IPC
- Next message (by thread): IPC
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Yannick, There's two modules that I like to use for this kind of stuff: http://starship.python.net/crew/tmick/ (process.py) http://www.lysator.liu.se/~astrand/popen5/ (also process.py just to be confusing) Hopefully one of these will make it into the standard library. I honestly like them both and combine parts from both when I need to create my own classes. The reason your program hangs is because .readlines() will keep reading untill an EOF(ie: program exits) is reached and since the pipe is still open it never will be. (The example given in the popen2 module, http://docs.python.org/lib/popen2-flow-control.html, eludes to this but never actually says it.) I recently did a quick hack using select and popen2, but I doubt it's fast or even safe, but it works. #yadda yadda r, w, e = popen2.popen3(cmd) cmd = "?\n" w.write(cmd) w.flush() #continuely test for output to read while select.select([e],[],[],1)[0]:#timeout guessing game line=e.readline() #do something with line while select.select([r],[],[],1)[0]:#timeout guessing game line=r.readline() #do something with line If you're output is line buffered you probably shouldn't have many problems with this approach if you can be assured your program will respond within the 1 second alloted to it. If you're positive you'll get output, just remove the timeout. Hope this helps. -Brian ---- Original message ---- >Date: Tue, 27 Jul 2004 14:20:19 -0400 >From: "Yannick Turgeon" <nobody at nowhere.com> >Subject: Re: IPC >To: python-list at python.org > >Larry, > >As I said, I use FTP only to test the IPC and give here a known example. >It's in fact with a custom program that I have to communicate. > >Any help in this regard? > >Yannick > >"Larry Bates" <lbates at swamisoft.com> wrote in message >news:e9OdnbY0ddteC5vcRVn-sw at comcast.com... >> Python has built in support for ftp (see ftplib) >> use it instead of trying to "communicate" with >> external FTP program. >> >> http://www.python.org/doc/current/lib/module-ftplib.html >> >> You can catch any exceptions (like failure to connect) >> by using python try:/except: blocks. >> >> HTH, >> Larry Bates >> Syscon, Inc. >> >> "Yannick Turgeon" <nobody at nowhere.com> wrote in message >> news:Z6wNc.21572$i_2.899460 at news20.bellglobal.com... >> > Hi, >> > >> > I'm relatively new to Python. I'm using 2.3.4 on W2K. >> > >> > What I want to do is to start a program and interact with it. Say my >> program >> > is FTP, I want to start FTP then send the commande "open x.x.x.x" then >> look >> > for the answer (if the connection is opened or not), then do something >> > dependant of the success or error. >> > >> > I tried with popen3. The problem I got with this: it seems that I have >to >> > end the program before being able to read the output. Or maybe I'm not >> using >> > it correctly. I do test the communication with FTP exec. but it will be >a >> > custom program in real. Here is my code: >> > >> > >> > def test(self): >> > cmd = "ftp" >> > r, w, e = popen2.popen3(cmd) >> > >> > cmd = "?\n" # A simple FTP commande >> > w.write(cmd) >> > w.flush() >> > >> > # That is what I would like but it's hanging here. I have to >> remove >> > this group and read at the end. >> > for line in e.readlines(): >> > # Do something conditionnal to the result of "line" >> > pass >> > for line in r.readlines(): >> > # Do something conditionnal to the result of "line" >> > pass >> > >> > >> > cmd = "quit\n" >> > w.write(cmd) >> > w.flush() >> > >> > for line in e.readlines(): >> > print line >> > for line in r.readlines(): >> > print line >> > >> > w.close() >> > r.close() >> > e.close() >> > ---------------------- >> > >> > Anybody can help? Thanks for your time. >> > >> > Yannick >> > >> > >> >> > > >-- >http://mail.python.org/mailman/listinfo/python-list
- Previous message (by thread): IPC
- Next message (by thread): IPC
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list