Я публикую это как ответ, потому что я новый пользователь, и переполнение стека не позволит мне голосовать.
Решение Сорина Сбарни работает для меня под OS X, Linux и Windows, и я благодарен за это.
Тем не менее, tempfile.gettempdir () ведет себя одинаково в OS X и Windows, а другой - в некоторых / многие / все (?) * Никсах (игнорируя тот факт, что OS X также Unix!) Разница важна для этого кода.
OS X и Windows имеют пользовательские временные каталоги, поэтому временный файл, созданный одним пользователем, не виден другому пользователю. В отличие от этого, во многих версиях * nix (я тестировал Ubuntu 9, RHEL 5, OpenSolaris 2008 и FreeBSD 8) временный каталог / tmp для всех пользователей.
Это означает, что когда файл блокировки создается на многопользовательском компьютере, он создается в / tmp, и только пользователь, создавший файл блокировки в первый раз, сможет запустить приложение.
Возможное решение - вставить текущее имя пользователя в имя файла блокировки.
Стоит отметить, что решение OP по захвату порта также будет плохо работать на многопользовательском компьютере.