Где я должен создать файл PID / блокировки при написании переносимого приложения - PullRequest
2 голосов
/ 11 мая 2011

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

Моей первой мыслью было (согласно Linux FHS ) просто сохранитьФайл PID в /var/run.Таким образом, я могу проверить, существует ли PID-файл, и выйти с ошибкой, если он есть.

Теперь, если я хочу, чтобы мое приложение было переносимым, я должен учитывать, что /var/run не существуетв каждой системе (например, Windows).

Какова лучшая практика в этом случае?

Примечание: Это не обязательно должен быть файл PID.0-байтовый файл «блокировки» тоже подойдет.Преимущество файла PID заключается также в предоставлении PID тому, кому потребуется расследовать проблемы.

Уточнение: Приложение представляет собой сценарий резервного копирования, который обычно выполняется четко определенным пользователем.

Ответы [ 2 ]

1 голос
/ 11 мая 2011

Один из способов - заставить ваше приложение полагаться на инфраструктуру портирования (например, Qt).Такой фреймворк обеспечивает абстракцию платформы, позволяя вам всегда ставить «в правильное место» (например, для Windows она меняется между XP, Vista / 7).Например, вы можете взглянуть на QSettings Если вы не можете полагаться на фреймворк, то поиск в их коде может дать расширенный ответ.

0 голосов
/ 11 мая 2011

как насчет объекта IPC? Объекты IPC общесистемны, верно? Предположим, у нас есть объект IPC с именем "pp1232fafdsafd", во второй раз, когда мы его откроем, linux установит errno в EEXIST. мы можем проверить errno, чтобы предотвратить запуск нескольких экземпляров.


по лж hittlle@hotmail.com

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