Добрый день всем. Проблема такая. Хочу устроить обмен данными между двух приложений в Linux Fedora 11. Использую поименованные каналы.
Но вот незадача. В консоли все работает, а в ГУИ не хочет. Не пойму почему.
Дело обстоит так, в стандартном приложении с MainWindow на клик мыши вешается обработчик:
C++ (Qt)
void MainWindowImpl::load(){
pFile = NULL;
int t = mkfifo(FIFO_NAME, 0600);
if(t != 0){
QMessageBox::information(this, "Error", "t = "+QString::number(t));
exit(1);
}
perror("mkfifo() error");
pFile = fopen(FIFO_NAME, "rb");
if (!pFile){
QMessageBox::information(this, "Error", "Not open file");
}
}
И происходит следующее...
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