January 15th, 2016

Ларикко Дайнин

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.