anonymous@RULINUX.NET~# | Last login: 2024-11-05 13:26:13 |
Регистрация Вход | Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск |
Форум - Development | [RSS] |
Понадобилось мне реализовать субж. Алгоритм такой:
Во временном каталоге создается файл в который пишется pid процесса получаемый с помощью qApp.applicationPid(); Далее при запуске копии приложения проверяется есть ли в списке процессов процесс с таким-же названием как у запущенного и с pid указанным в файле. Если есть, то выходим из программы. При закрытии программы в closeEvent удаляем созданный файл. Загвоздка собственно вот в чем: как в Qt получить список запущенных процессов? Запускать через QProcess "ps -A|grep"+qApp->applicationFilePath().section("/",-1) не хочется. Да и для винды это не подходит.
Tux-oid(*) (2010-08-06 16:31:00)
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.6) Gecko/20100626 SUSE/3.6.6-1.2 Firefox/3.6.6
|
|
|
Скрыть
Re: [Qt]Запрет одновременного запуска нескольких копий приложенияПри запуске приложения создавай именованную область разделяемой памяти с помощью самой кути ( http://doc.trolltech.com/4.5/qsharedmemory.html#create ) и складывай туда ПИД или специфицируй там что-то ещё через что повторно запущенный процесс может интерачить с уже запущенным. Повторно запущенный процесс попытается создать память с тем же именем но обломается и сможет либо просто тупо выругаться и закрыться или там дать знать уже запущенному, что вот пользователь хотел эту программу с такими-то параметрами - это уж как напишешь. Хотя мне не нравится такой софт, что не даёт себя запустить несколько раз. Ну какое разработчику дело - может у меня 25 аккаунтов в скайпе или ещё какая надобность запускать несколько процессов. |
Скрыть
Re: [Qt]Запрет одновременного запуска нескольких копий приложения>Ну какое разработчику дело - может у меня 25 аккаунтов в скайпе или ещё какая надобность запускать несколько процессов.
Tux-oid(*)(2010-08-06 23:43:01)
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.8) Gecko/20100723 SUSE/3.6.8-0.1.1 Firefox/3.6.8 |
Скрыть
Re: [Qt]Запрет одновременного запуска нескольких копий приложенияПо-такому принципу реализовано в Eclipse. Так вот иногда при падении нельзя было зайти в программу без ручного удаления этого файла. Tux-oid(*)(2010-08-09 16:59:27)
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.6) Gecko/20100626 SUSE/3.6.6-1.2 Firefox/3.6.6 |
Скрыть
Re: [Qt]Запрет одновременного запуска нескольких копий приложенияКстати я нашел решение субжа. Использование QtSingleApplication решает. http://qt.nokia.com/products/appdev/add-on-products/catalog/4/Utilities/qtsingleapplication Tux-oid(*)(2010-08-09 17:09:14)
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.6) Gecko/20100626 SUSE/3.6.6-1.2 Firefox/3.6.6 |
Скрыть
Re: [Qt]Запрет одновременного запуска нескольких копий приложения>Так вот иногда при падении нельзя было зайти в программу без ручного удаления этого файла.
gnomino(*)(2010-08-09 17:32:18)
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.7) Gecko/20100723 Fedora/3.6.7-1.fc13 Firefox/3.6.7 |
Скрыть
Re: [Qt]Запрет одновременного запуска нескольких копий приложения> Ну и нахрена я в плеер потащу еще и QNetwork модуль?
bugmaker(*)(2010-08-09 20:20:26)
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100407 Ubuntu/9.04 (jaunty) Shiretoko/3.5.9 |
|
|
|
Этот тред читают 3 пользователя: |
Анонимных: 3 Зарегистрированных: 0 |
Re: [Qt]Запрет одновременного запуска нескольких копий приложения
как-то тоже столкнулся с подобной проблемой, правда писал на яваскрипте, но тут в принципе не важно. Проще вместо файла с пидом открыть файл-симафор и заблокировать его на запись, а во время старта программы проверять возможность записи в этот файл, если файл не болокирован работать дальше, если да выходить.
(Mudilla/9.0 (XXX; U; *nix i686; ru; rv:1.8.1.11) Gecko/20132528 nonM$OS/5.2.14.11-1.5 Firefox/5.2.14.11)