Ограничение запуска приложения одной копией
NWhisper 23 февраля, 2006 - 15:55
В Windows на C++ можно ограничить запуск приложения одной копией следующим образом:
#include <windows.h> int main(int argc, char *argv[]) { HANDLE mutex; WCHAR *mtxname = L"MyMutexName"; if (OpenMutex(MUTEX_ALL_ACCESS, false, mtxname) != 0) return -1; else mutex = CreateMutex(null, false, mtxname); // Тело приложения ReleaseMutex(mutex); return 0; }
А как такое же можно провернуть в Linux?
»
- Для комментирования войдите или зарегистрируйтесь
mutex он и в Африке mutex
man pthread_mutex_init
Также для этих целей можно использовать семафоры... только нужно ли это(огрничение) во многопользовательской среде?
Оно даже в
Оно даже в однопользовательской сильно мешает. Самые божественно кривые вещи - это приложения под КПК, где почти все программы запускаются в единственном экземпляре и открывают единственный файл. Так хорошо переносить данные из одного текстовика в другой или лазить по инету, когда надо постоянно открывать и закрывать страницы. Что-то можно обойти, но все равно неприятно.
Re: mutex он и в Африке mutex
pthread_mutex_t, pthread_mutex_init, pthread_mutex_lock и пр. не годятся, так как они работают только внутри одного многопоточного процесса. Они не являются глобальными для сеанса пользователя.
Другими словами, созданный экземпляр pthread_mutex_t одного приложения не видно из другого.
Насколько я
Насколько я помню это делается при помощи файловой системы. Создаются специальный файлы. Кажется нечто вроде этого:
http://linuxcommand.org/man_pages/lockfile1.html
Всем спасибо! Я
Всем спасибо! Я нашел решение...