Название: Буфер обмена и семафоры Отправлено: 5ORBEX от Апрель 18, 2013, 19:16 Привет форумчане ... Работаю под линукс .. Запускаю одновременно два процесса ... Первый процес должен записать какие то данные в буфер обмена, а второй - их оттуда прочитать ... Чтоб не было так, что второй читае, а первый еще не успел записать, использую семафор ... Буфер создавал с помощью QClipboard, семафор - QSystemSemaphore ... возникла такая проблема:
1) Если завершить процес, то содержимое буфера затираеться, и второй процес не имете что читать 2) Если использовать семафоры, то в содержимое буфера перед тем, что записал первый процес, еще записиваються какие то символы ... тоесть второй процес с буфера будет читать не правильные данные .. Кто знает, как решить эти два вопроса ... Зарание благодарен Название: Re: Буфер обмена и семафоры Отправлено: Igors от Апрель 19, 2013, 07:17 Вместо QClipboard лучше использовать QSharedMemory. Проблемы Вы описали довольно торопливо и не очень внятно. Вероятно неприятности возникают когда один из процессов завершается, тогда второй ждет forever и зависает. Обычно это решается примерно так:
- буфер условно делится на 2 части, каждый процесс пишет в свою - если процессу надо завершиться он записывает в свою часть условную сигнатуру/флажок типа "я отрубился" и толкает семафор Название: Re: Буфер обмена и семафоры Отправлено: 5ORBEX от Апрель 19, 2013, 15:32 а как тогда писать и читать в QShared Memory .... можете написать пример, например записи и чтения в QSharedMemory строки QString ...
Название: Re: Буфер обмена и семафоры Отправлено: Igors от Апрель 20, 2013, 09:20 а как тогда писать и читать в QShared Memory .... можете написать пример, например записи и чтения в QSharedMemory строки QString ... Не можете потому что так делать не нужно. Храните в QSharedMemory сериализованные данные, считайте что это как бы "быстрый файл". Не забывайте делать lock() |