2012-04-18 61 views
1

我想提出在Python简单的锁定机制,而不必依靠现有的库锁定(即fcntl和可能其他人)如何在Python中获取手动锁机制的进程PID?

我已经有一个小的存根,但搜索了一下后,我不能” t找到一个很好的答案,就如何手动创建锁定文件并将过程PID放入其中。这里是我的存根:

dir_name = "/var/lock/mycompany" 
file_name = "myapp.pid" 
lock = os.path.join(dir_name, file_name) 

if os.path.exists(lock): 
    print >> sys.stderr, "already running under %s, exiting..." % lock 
    # display process PID contained in the file, not relevant to my question 
    sys.exit(ERROR_LOCK) 
else: 
    # create the file 'lock' and put the process PID inside 

我怎样才能得到当前进程的PID,并把它放在lock文件里面?我想过看着/proc文件系统,但对于这样一个简单的任务似乎有点太多了。

谢谢。

+3

'open(lock,'w')。write(os.getpid())' – tMC 2012-04-18 19:21:43

+0

完美答案thanks,guess我不需要打扰/ proc毕竟... – 2012-04-18 19:24:35

+2

只是为您的信息,如果你需要在proc中询问一个进程,你可以用'/ proc/self'来完成。 '/ proc/self'永远是调用进程的符号链接。然而,只是收集PID,这是过度杀伤。 – tMC 2012-04-18 19:28:35

回答

1

open(lock, 'w').write(os.getpid())

0

不要忽视os.getpid()的结果转换成字符串STR(os.getpid())。写需要一个字符串参数。