Название: QSharedMemory native key Отправлено: ammaximus от Октябрь 03, 2014, 15:39 Один процесс использует QSharedMemory, другой shmget. Для этого вроде и ввели setNativeKey в 4.8.
Код: #include <QCoreApplication> В этом коде я пытаюсь подключится к указанному нативному ключу, но вместо этого генерируется другой. Что я делаю не так? (http://MMFFail.png) shmget(key) с этим ключом работает верно. Qt4.8.5 Название: Re: QSharedMemory native key Отправлено: Old от Октябрь 03, 2014, 16:47 Вы определитесь, этот процесс создаёт память (create) или подключается к уже созданной (attach).
Название: Re: QSharedMemory native key Отправлено: ammaximus от Октябрь 06, 2014, 07:54 Задача в том, что если память еще не создана ее нужно создать. Я планирую сделать if (!create) attach. Но это не имеет отношения к проблеме я пробовал и так и так.
На первом изображении я создаю память процессом linux и пытаюсь подключится к нему Qt. На втором я создаю через Qt, ключ получается не такой, какой я просил, поэтому процесс linux следом создает новый сегмент. ЧЯДНТ? Есть вообще какие-либо рабочие примеры использования setNativeKey? Название: Re: QSharedMemory native key Отправлено: Old от Октябрь 06, 2014, 08:33 А как вы формируете ключ в программе без Qt? Точнее что указываете для параметра proj_id функции ftok?
Qt пикает туда 'Q'. Попробуйте формировать ключ в программе без Qt так: Код
тогда они будут совпадать. Название: Re: QSharedMemory native key Отправлено: ammaximus от Октябрь 06, 2014, 10:36 Спасибо!
Название: Re: QSharedMemory native key Отправлено: ammaximus от Октябрь 06, 2014, 12:20 Вопрос по ftok. Я запустил эту функцию в qt приложении и получил ключ, совпадающий с тем что дала mem.setNativekey
ftok ("4589",'Q'); Но когда я перенес функцию в проект без Qt он начал кидаться в меня enoent, как в принципе и должно бы ь поскольку 4589 не файл, но почему там то работает? Название: Re: QSharedMemory native key Отправлено: ammaximus от Октябрь 06, 2014, 12:22 И еще у меня в процессе ftok не использовался, сразу shmget. Можно что нибудь сделать чтобы не переписывать старый проект сильно (он shared library)
Название: Re: QSharedMemory native key Отправлено: ammaximus от Октябрь 06, 2014, 12:42 Вопрос снят, креатор каким то боком создавал этот файл в папке билда
Название: Re: QSharedMemory native key Отправлено: ammaximus от Октябрь 06, 2014, 14:21 Чтобы уж закрыть тему: с натив ключом я разобрался он ждет на вход аргумент фтока, а что с обычным ключом? Что подавать на вход ему и что из этого получится? Я понял что изза нативкей перестает работать встроенный сеемафор, а что если создавать через qt и подцепаться к семафору вручную?
|