1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
1 | |
Взаимодействие процессов14.12.2011, 13:03. Показов 5705. Ответов 27
Метки нет (Все метки)
Подскажите пожалуйста как мне наладить взаимодействие между двумя процессами через каналы.
Вот допустим есть у меня два процесса которые отображают данные через mmap в один файл. А как мне наладить взаимодействие между ними? Как заставить например второй процесс принимать данные из этого mmap, ну вот чтобы он ожидал пока там не появиться сообщение и печатал его сразу после того как оно там появляется. Как заставить его следить за этим каналом между потоками? Ну и вопрос на засыпку: зачем козе баян, те зачем мне mmap если я и так могу средствами си писать данные в файл, закрывать файл, а во втором процессе в это время открывать файл и считывать данные с файла и тоже закрывать его. Добавлено через 3 минуты О том что такое mmap читал здесь так что отталкиваюсь от тех данных.
1
|
14.12.2011, 13:03 | |
Ответы с готовыми решениями:
27
Взаимодействие процессов. Сигналы Организовать взаимодействие двух процессов через неименованный программный канал Взаимодействие процессов Взаимодействие процессов |
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
14.12.2011, 19:36 [ТС] | 21 |
Ошибка естественно после вызова моего execv, до него ошибок нет в errno.
Добавлено через 2 минуты talis, а, я null забывал дописывать в последний аргмуент вот оно мне их и удваивало наверное, вот только не думаю я что это явл. причиной проблемного создания процесса. Добавлено через 6 минут Хм, а когда аргументы ограничил NULL в конце то теперь вызов сработал, правда колличество полученных аргументов не 3 почему-то, хотя у меня их 3 + 4ый =NULL.
0
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
14.12.2011, 20:05 [ТС] | 23 |
talis, ну я понимаю что он не считается потому и странно так как массив передал arg[4], а проверка во втором процессе говорит что аргументов меньше 3х. Сейчас заставлю проверку выводить что она получает независимо от того хватает ли параметров.
Добавлено через 2 минуты Второй процесс говорит что получает ноль аргументов Добавлено через 2 минуты А, нет, моя вина, копировал не ту переменную, теперь работает.
0
|
14.12.2011, 20:06 | 24 |
Gepar, а первый аргумент вы сделали NULL, как при инициализации в примере, или записали туда имя исполняемого файла? Вам нужен второй вариант
Добавлено через 27 секунд Не увидел.
0
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
14.12.2011, 22:18 [ТС] | 25 |
Уфф, с первым пунктом лабораторной значит закончил, хотя и долго провозился, спасибо кто подсказывал. Теперь попробую разобраться с mkfifo(), надеюсь с ним будет быстрее и легче.
Добавлено через 2 часа 1 минуту C pipe тоже разобрался, очень помог пример talis. Теперь последний пункт: отправка и приём с помощью примитивов типа send / receive. Добавлено через 6 минут Что-то не так то просто выгуглить что именно от меня хотят... Задание полностью звучит как "Реализовать взаимодействие между процессами на основе механизма синхронной передачи сообщений при помощи примитивов send и receive." Я так догадываюсь что это опять же таки через отображение в памяти, но не могу найти полезную информацию в гугле на эту тему чтобы с хоть каким-то примером была.
0
|
14.12.2011, 22:43 | 26 |
Gepar, нет. Думаю, имеются ввиду сокеты. Сетевые, как везде, или "локальные" или "юниксовые" сокеты. Предполагаю, что последнее.
Добавлено через 27 секунд Но локальных сокетов на винде нет, это юникс-онли.
0
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
14.12.2011, 22:51 [ТС] | 27 |
talis, ну ... может и локальные сокеты, но где можно о пересылке сообщений через них этими методами почитать?
0
|
15.12.2011, 11:00 | 28 |
Gepar, вот огромнейшая статья по межпроцессному взаимодействию в Unix (англ.). Может, поможет:
Beej's Guide to Unix IPC
0
|
15.12.2011, 11:00 | |
15.12.2011, 11:00 | |
Помогаю со студенческими работами здесь
28
Взаимодействие процессов / WinAPI Взаимодействие двух процессов Взаимодействие процессов в Windows Взаимодействие 2-ух процессов через разделяемую память Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |