LinuxQuestions.org
Review your favorite Linux distribution.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 05-03-2009, 02:28 PM   #1
edM
Member
 
Registered: Nov 2003
Location: U.K.
Distribution: Slackware-12
Posts: 137

Rep: Reputation: 15
Python, breaking out of infinite loop


Hi,

I have a a python app which reads in data from a bluetooth module. I have an infinite loop as the data is continuous, but i want the user to be able to break out of it if he so wishes to close the program, rather than using ctrl+C

eg, "Do you want to quit? y/n?"

now i cant use input() as it just waits for a key press - i want the loop to be still running.

Any ideas?

thanks
 
Old 05-03-2009, 04:41 PM   #2
vinay_s_s
Member
 
Registered: Jul 2003
Posts: 659

Rep: Reputation: 30
Use threads?
 
Old 05-03-2009, 05:15 PM   #3
nbecker
LQ Newbie
 
Registered: Oct 2004
Posts: 1

Rep: Reputation: 0
multiprocessing

This is classic multiprocessing question. There are several architectures that could be used.

I guess the first question is whether this is unix or windoze. If unix, the simplest might be to use a separate process, then when the user wants to quit, the process group could be sent a signal (kill).
 
Old 05-03-2009, 05:20 PM   #4
edM
Member
 
Registered: Nov 2003
Location: U.K.
Distribution: Slackware-12
Posts: 137

Original Poster
Rep: Reputation: 15
yeah its for linux.

thanks for the ideas.
 
Old 05-04-2009, 05:25 AM   #5
SJ-AvatarSmith
LQ Newbie
 
Registered: Mar 2009
Posts: 8

Rep: Reputation: 0
...select and try/except.

in your main loop
poll using
use select.select on sys.stdin
then if a key comes in or ^C or a sig 15 is sent to your process it will ask, but IF you are using a process ,it will hang in the background waiting for input.

try:
## no wait arguments, I dont have the book open so dont ding my syntax
if select.select ((sys.stdin,"",""))
ch=sys.stdin.read() (one or more char's avaible in buffer)
deal with...
keep looping
except termsig handler (look up exceptions)
except some other error...
print Crud
 
Old 05-04-2009, 11:54 AM   #6
edM
Member
 
Registered: Nov 2003
Location: U.K.
Distribution: Slackware-12
Posts: 137

Original Poster
Rep: Reputation: 15
interesting, i will give that a go when i get some time.
 
Old 05-04-2009, 11:08 PM   #7
andreski
LQ Newbie
 
Registered: Dec 2007
Posts: 2

Rep: Reputation: 0
Maybe Using Sockets in Two Threads, server and client

It's a easy way to implement a Inter Process Communication.

http://docs.python.org/library/socket.html

The server loop runs a daemon listening all time to the client.

The client ask the user about leaving the application.

When the user say Y, send a string to the server and sys.exit(0)
 
Old 05-05-2009, 11:27 PM   #8
SJ-AvatarSmith
LQ Newbie
 
Registered: Mar 2009
Posts: 8

Rep: Reputation: 0
yes but....

Quote:
Originally Posted by andreski View Post
Maybe Using Sockets in Two Threads, server and client

It's a easy way to implement a Inter Process Communication.

http://docs.python.org/library/socket.html

The server loop runs a daemon listening all time to the client.

The client ask the user about leaving the application.

When the user say Y, send a string to the server and sys.exit(0)
---------------------------
oooh...I've written several "servers" with a terminate option you have to be careful about when you can respawn and dangling multiple clients, as well you may have to muck some deep level socket options (aka TCP wait) and functionality. I hadnt mentioned that as its kinda a pain, and I felt the originator of the thread is just recently coming to python. BUT if you stick to one of the newer-predefined class templates its not too bad. (or you've done sockets in C) Incidentally, I daemonize simply by sh MyPython.py &, but usually keep a term window open for the process while I'm debugging or adding functionality, the main issue with threading is gui/stdio access.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
infinite loop not exiting when killed kinkle Linux - General 1 04-11-2009 07:55 PM
Shell infinite loop hell binarybob0001 Programming 5 11-03-2007 11:54 AM
Infinite Loop ewt3y Programming 3 08-16-2005 09:48 AM
Java Stopping an Infinite loop oulevon Programming 3 10-18-2004 10:11 PM
infinite loop beginner_84 Programming 5 08-15-2004 02:32 AM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 08:06 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration