2012-04-18 58 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())。寫需要一個字符串參數。