Название: Прошу помощи pipe (поименованный канал) Не работает в GUI Отправлено: star62 от Август 05, 2009, 07:45 Добрый день всем. Проблема такая. Хочу устроить обмен данными между двух приложений в Linux Fedora 11. Использую поименованные каналы.
Но вот незадача. В консоли все работает, а в ГУИ не хочет. Не пойму почему. Дело обстоит так, в стандартном приложении с MainWindow на клик мыши вешается обработчик: Код
И происходит следующее... mkfifo(FIFO_NAME, 0600); создает файл, t = 0; perror("mkfifo() error"); пишет следующее "mkfifo() error: Ресурс временно недоступен" Вот тут главный вопрос, почему? Кто его блокирует? и как следствие pFile = fopen(FIFO_NAME, "rb"); виснет и весь обработчик за ней Если все тоже самое сделать в простом консольном приложении тогда perror("mkfifo() error"); пишет "mkfifo() error: Success" и все в порядке Помоги, объясните в чем причина и как исправить? P.S. Все делаю в QDevelop Название: Re: Прошу помощи pipe (поименованный канал) Не работает в GUI Отправлено: ритт от Август 05, 2009, 08:02 есть одна мыслишка, но пока воздержусь...
а почему не использовать QLocalSocket? Название: Re: Прошу помощи pipe (поименованный канал) Не работает в GUI Отправлено: star62 от Август 05, 2009, 08:51 а почему не использовать QLocalSocket? Честно, не знал, можно попробовать. Вот только тогда среда передачи ограничивается Qt, а так можно было бы и не Qt приложения цеплять. (Хотя может я и не прав, надо разобраться подробнее с сокетами) И все таки хотелось бы услышать соображения по поводу изначальной проблемы :) Название: Re: Прошу помощи pipe (поименованный канал) Не работает в GUI Отправлено: star62 от Август 05, 2009, 18:11 Решил задачу через QLocalSocket и QLocalServer. Работает. Но для полного удовлетворения нехватает понимания функций
bool waitForConnected ( int msec = 30000 ) bool waitForDisconnected ( int msecs = 30000 ) virtual bool waitForReadyRead ( int msecs = 30000 ) Если не трудно объясните по русски их :) Что делают, для чего и где необходимы. Из прочитанного на англицком, порядка в голове не наступило. Понятно что они очень важны, но не более. |