Название: Ограничение запуска приложения одной копией
Отправлено: NWhisper от Февраль 23, 2006, 16:20
В 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?
Название: Ограничение запуска приложения одной копией
Отправлено: Admin от Февраль 23, 2006, 22:22
на линуксе создают pid файлы! причем обработка этого ложится на пользователя
Название: Ограничение запуска приложения одной копией
Отправлено: NWhisper от Февраль 24, 2006, 17:12
Всем спасибо! Я нашел решение... #include <sys/ipc.h> #include <sys/sem.h> #include <sys/types.h>
int main(int argc, char *argv[]) { key_t sem_key = 14354733; int sem_id; union senum { int val; struct semid_ds *buf; unsigned short int *array; struct seminfo *__buf; }; if ((sem_id = semget(sek_key, 1, 0644 | IPC_CREAT | IPC_EXCL)) < 0) return -1;
// Тело приложения
union senum ignored_argument; semctl(sem_id, 1, IPC_RMID, ignored_argument); return 0; }
|