Здравствуйте, гость ( Вход | Регистрация )
SABROG | Дата 28.11.2009, 2:16 |
для быстрой сдачи пригодится. Вот оказывается для чего программирование нужно, для быстрой сдачи! А я то дурак уже не учусь, а всё сдаю и сдаю из-за интереса... |
|
Cergey | Дата 27.11.2009, 19:06 |
"Добавлю сюда код с определением запуска через сокеты на WinAPI" Перепутал: не сокеты, а мьютексы!!! Litkevich Yuriy, для быстрой сдачи пригодится. |
|
Litkevich Yuriy | Дата 27.11.2009, 19:03 |
всё таки это всё какие-то извраты. Лучше использовать отлаженную кросплатформенную библиотеку от самих тролей. Пока она была не доступна по LGPL, люди делали её аналог, и проверили кучу механизмов которые работали бы всюду. в Том числе и в многопользовательской среде. |
|
Cergey | Дата 27.11.2009, 19:00 |
Добавлю сюда код с определением запуска через сокеты на WinAPI. Просто что-бы другие(и я) не искали после прочтения темы в гугле это. HANDLE hnd = CreateMutex(NULL, TRUE, m_pszAppName); if ( GetLastError() == ERROR_ALREADY_EXISTS && WAIT_ABANDONED != WaitForSingleObject(hnd, 1000)) { AfxMessageBox("Application already running. "); return FALSE; } Взято с http://forum.ixbt.com/topic.cgi?id=40:682 Стати для тех кто первый раз видит WinAPI m_pszAppName - unicode строка В QT для быстрого перевода можно использовать QString text = "Lab 2 Server"; // Имя приложения TCHAR* m_pszAppName = (TCHAR *)text.unicode(); // Имя в формате Unicode |
|
flankerr | Дата 10.6.2009, 11:36 |
Повторюсь,если использовать шаредМемори то пропадает всякий смысл в сокетах. Кстати недостатки описанной мной выше идеи с файлами убераються использованием ШаредМемори |
|
BRE | Дата 8.6.2009, 17:24 |
Что то не понравился мне SingleApplication. Во первых он работает только под Qt 4.4 и выше. Во вторых юзает ШаредМемори. Спрашивается зачем тогда сокеты, а если есть сокеты то зачем ШаредМемори - в общем намудрил не понравилось. Юра выше писал, автор SingleApplication известен, спроси у него для чего используется SharedMemory. Помниться, читал ветку посвященную этому компоненту, там вроде были какие-то косяки с сокетами на Mac'е. |
|
flankerr | Дата 8.6.2009, 16:46 |
Что то не понравился мне SingleApplication. Во первых он работает только под Qt 4.4 и выше. Во вторых юзает ШаредМемори. Спрашивается зачем тогда сокеты, а если есть сокеты то зачем ШаредМемори - в общем намудрил не понравилось. | |
Litkevich Yuriy | Дата 5.6.2009, 15:29 |
рекомендую на прогорге почитать ветку Константина, автора SingleApplication (не Qtишного), там много обсуждений о принципах работы, да и автора можно распросить поподробнее. Ссылка |
|
Sokoloff | Дата 5.6.2009, 15:25 |
А через список процессов нельзя определить есть запущенные копии? Да решение не кроссплатформенное, но IMHO самое прямое, или есть какие-то подводные камни? | |
flankerr | Дата 5.6.2009, 15:03 |
тут ты пошёл дальше Мне надо просто знать есть ли запущенные копии или нет. Т.е. вполне допускается ситуация когда работает несколько копий программы. Для этого вполне лдостаточно метки времени и счётчика. Каждая клпия раз в заданный промежуток обновляет метку времени что свидетельствует о валидность информации в файле. Устанавливать каждому приложению уникальный номер слишком излишне. Тут нет задачи мониторить упало\не упало. А вот одновременный доступ на запись из несольких приложений тут тонкое место... возможно шаредМемори болеее луший вариант но его нет в Qt 4.3.3 а переходить на более новые версии нельзя. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 18.4.2024, 10:35 |