Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > взаимодействие двух проектов


Автор: YoungLady 18.6.2007, 11:21
Проблема следующая: существует необходимость отделить интерфейсную часть программы от основной части , в которой производится обработка данных. причем оформлено это должно быть в два выполняемых файла. Вопрос состоит в том, какими средствами может быть организована передача данных между ними в однопроцессорной системе.

Автор: archimed7592 18.6.2007, 11:35
Цитата(YoungLady @  18.6.2007,  11:21 Найти цитируемый пост)
какими средствами может быть организована передача данных между ними в однопроцессорной системе. 

Называются эти средства IPC(Inter-Process communication). Возможность их использования, как правило, от количества процессоров в системе не зависит.

Думаю тебе вполне подойдут pipes. Описание того как их использовать можно найти практически в любой книге по программированию под unix или в сети.

Ознакомится можно здесь:
http://en.wikipedia.org/wiki/Inter-Process_Communication
http://en.wikipedia.org/wiki/Anonymous_pipe
http://en.wikipedia.org/wiki/Pipeline_%28Unix%29

Автор: MAKCim 18.6.2007, 11:59
Цитата(archimed7592 @  18.6.2007,  11:35 Найти цитируемый пост)
Возможность их использования, как правило, от количества процессоров в системе не зависит.

на уровне пользователя  smile 
YoungLady, 
взаимодействие должно быть односторонним или двусторонним?
если односторонним, тогда канал - лучший выбор, иначе очереди сообщений (с двумя типами сообщений)
можно общую память использовать (самый быстрый способ), но тогда придется прикручивать семафоры и разрабатывать структуру хранения данных

Автор: YoungLady 18.6.2007, 13:20
Цитата

взаимодействие должно быть односторонним или двусторонним?

взаимодействие должно быть двусторонним... 

Автор: MAKCim 18.6.2007, 15:38
YoungLady, 
тогда очереди сообщений

Автор: YoungLady 18.6.2007, 16:14
MAKCim
Правильно ли я понимаю, что очередь сообщений и именованные каналы (FIFO) - это одно и то же?

Автор: MAKCim 18.6.2007, 16:27
YoungLady, 
нет, это разные вещи... совсем разные

Автор: archimed7592 18.6.2007, 16:40
MAKCim, а чем pipeline в двустороннем способе взаимодействия плох?

Автор: MAKCim 18.6.2007, 16:59
archimed7592, 
много подводных камней и возможность взаимоблокировок
по этому поводу есть целая глава в http://oz.by/books/more1016304.html
в общем случае каналы не предназначены для двустороннего взаимодействия
в данном случае очереди сообщений подходят, имхо, лучше всего: будет два типа сообщений (например 0 и 1), первый процесс пишет в очередь сообщение типа 0 и читает сообщение 1, в свою очередь второй процесс читает сообщение 0 и пишет сообщение 1
фишка очередей сообщений в том, что ядро осуществляет сортировку по типу сообщения с возможностью чтения по различным условиям

Автор: smalcom 20.6.2007, 10:40
сокеты тож удобная фиха. стартового кода канеша поднабрать придецу, но зато птом благодать. ну и плюс програмки могуть на разных тачках быть

Автор: MAKCim 20.6.2007, 11:23
smalcom, 
ну да
если сеть не нужна, лучше тогда unix domain sockets использовать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)