Eleneldil G. Arilou (arilou) wrote,
Eleneldil G. Arilou
arilou

Abstract socket как гарант уникальности процесса

А кто что скажет про такой способ недопущения запуска второго экземпляра процесса? (При условии, что у меня нет потребности извне узнавать PID уже запущенного экземпляра.)
import socket
import sys
import time

def get_lock(process_name):
    global lock_socket   # Without this our lock gets garbage collected
    lock_socket = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
    try:
        lock_socket.bind('\0' + process_name)
        print 'I got the lock'
    except socket.error:
        print 'lock exists'
        sys.exit()

get_lock('running_test')
while True:
    time.sleep(3)

О том, что это Linux specific, я уже прочитал.

This entry was originally posted at http://arilou.dreamwidth.org/980028.html. Please comment there using OpenID.
Tags: linux, python, программирование
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments