Межпроцессное взаимодействие в UNIX

0

Возможно ли разветкить процесс и родительский процесс сообщить разветвленному процессу, чтобы вызвать функцию и вернуть ее результаты родительскому? Если да, то как мы можем это сделать? Я не уверен, что лучший способ выполнить межпроцессное общение - через трубы или сокеты (или какую-то другую структуру). Меня интересует только выполнение IPC в системах на базе Unix и программирование на C/C++.

  • 0
    Почему вы не используете поток вместо нового процесса? Легкая и простая связь с родительским потоком.
  • 1
    Я разделяю процессы для реализации разделения привилегий между родителем и потомком. Разве два потока не будут работать с одинаковыми привилегиями?
Показать ещё 3 комментария
Теги:

1 ответ

1
Лучший ответ

Если у вас есть отношения между родителями и детьми, я думаю, что неназванные трубы (AKA "трубы") лучше. В противном случае вы можете использовать локальные сокеты или FIFO (AKA "named pipes").

Вы можете заставить родителя отправить целое число ребенку. Ребенок, на основе полученного целого, запускает определенную функцию и отправляет результат родительскому.

  • 0
    Родителю придется сериализовать результаты вызова функции, верно? Я никогда не делал этого на C / C ++, но я делал это на Java.
  • 0
    Нет сериализации. Просто сделайте, чтобы родитель отправил целочисленное значение (например, 2). На дочернем элементе используйте if else: if (value_received == 2) f1 (...); иначе if (value_received == 3) f2 (...); и так далее.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню