To Kill a Process that is Accepting Connection on Socket

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • mumebuhi

    #1

    To Kill a Process that is Accepting Connection on Socket

    I removed my previous post about this topic because I apparently have
    pasted the wrong code. Sorry for the confusion and thanks for being
    patient.

    I am having problem to kill the following script completely. The script
    basically does the following. The main thread creates a new thread,
    which does a completely useless thing, and then starts excepting for a
    connection via socket.

    # start
    import pickle
    import signal
    import simplejson
    import socket
    import sys
    import threading
    import time

    counter = 0

    class WorkerThread(th reading.Thread) :
    def run(self):
    global counter
    while True:
    counter += 1
    time.sleep(10)

    worker_thread = WorkerThread()
    worker_thread.s tart()

    server = socket.socket(s ocket.AF_INET, socket.SOCK_STR EAM)
    server.bind(('' , 2727))
    server.listen(2 )

    def cleanup(signal, frame):
    print "die now"
    worker_thread.j oin(1)
    server.shutdown (socket.SHUT_RD WR)
    sys.exit(0)
    signal.signal(s ignal.SIGINT, cleanup)

    while True:
    channel, details = server.accept()
    stats = { 'key': "value" }
    s = simplejson.dump s(stats)
    channel.send(s)
    channel.close()
    # end

    The way I can think of right now is to kill the script using Ctrl+C.
    Hence, the signal handler in the code. However, the interpreter
    complains:
    $ python ex_server.py
    die now
    Traceback (most recent call last):
    File "ex_server. py", line 33, in ?
    channel, details = server.accept()
    File "/usr/lib/python2.4/socket.py", line 169, in accept
    sock, addr = self._sock.acce pt()
    File "ex_server. py", line 28, in cleanup
    server.shutdown (socket.SHUT_RD WR)
    File "<string>", line 1, in shutdown
    socket.error: (128, 'Transport endpoint is not connected')

    Does anybody know a better way to do this?

    Thank you.

    Buhi

Working...