Убедитесь, что один экземпляр приложения в Linux - PullRequest
32 голосов
/ 21 октября 2008

Я работаю над приложением с графическим интерфейсом в WxPython, и я не уверен, каким образом я могу гарантировать, что в любой момент времени на компьютере работает только одна копия моего приложения. Из-за характера приложения запуск более одного раза не имеет никакого смысла и быстро завершится неудачей. Под Win32 я могу просто сделать именованный мьютекс и проверить это при запуске. К сожалению, я не знаю каких-либо средств в Linux, которые могли бы сделать это.

Я ищу что-то, что будет автоматически выпущено в случае неожиданного сбоя приложения. Я не хочу обременять своих пользователей необходимостью вручную удалять файлы блокировки, потому что я разбился.

Ответы [ 12 ]

0 голосов
/ 21 октября 2008

Можете ли вы использовать утилиту 'pidof'? Если ваше приложение запущено, pidof запишет идентификатор процесса вашего приложения в стандартный вывод. Если нет, он напечатает новую строку (LF) и вернет код ошибки.

Пример (из bash, для простоты):

linux# pidof myapp
8947
linux# pidof nonexistent_app

linux#
0 голосов
/ 21 октября 2008

Если вы создаете файл блокировки и помещаете в него pid, вы можете проверить свой идентификатор процесса и сказать, не произошел ли сбой, нет?

Я не делал этого лично, так что бери с соответствующим количеством соли. : Р

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...