Кросс-платформенный IPC

Нет.

#define - токен препроцессора: сам компилятор его никогда не увидит. typedef - это токен компилятора: препроцессор не заботится об этом.

Вы можете использовать тот или иной эффект для достижения такого же эффекта, но лучше использовать его для ваших нужд

#define MY_TYPE int
typedef int My_Type;

Когда вещи становятся «волосатыми», использование правильного инструмента делает его правильным

#define FX_TYPE void (*)(int)
typedef void (*stdfx)(int);

void fx_typ(stdfx fx); /* ok */
void fx_def(FX_TYPE fx); /* error */
72
задан Azat Ibrakov 24 September 2018 в 11:24
поделиться

12 ответов

С точки зрения скорости лучший межплатформенный механизм IPC будет каналами. Это предполагает, однако желание межплатформенной IPC на той же машине. Если Вы захотите быть в состоянии говорить с процессами на удаленных машинах, Вы захотите посмотреть на использование сокетов вместо этого. К счастью, если Вы говорите о TCP, по крайней мере, сокеты и каналы ведут себя в значительной степени то же поведение. В то время как API для установки их и соединения их отличаются, они оба просто действуют как потоки данных.

трудная часть, однако, не является каналом передачи, но сообщениями, которые Вы передаете по нему. Вы действительно хотите посмотреть на что-то, что выполнит проверку и анализирующий для Вас. Я рекомендую смотреть на Google Буферы Протокола . Вы в основном создаете файл спецификации, который описывает объект, который Вы хотите передать между процессами, и существует компилятор, который генерирует код на многих различных языках для чтения и записи объектов, которые соответствуют спецификации. Это намного легче (и меньше склонной ошибки), чем попытка придумать обменивающийся сообщениями протокол и синтаксический анализатор самостоятельно.

55
ответ дан Douglas Mayle 24 November 2019 в 12:41
поделиться

Python имеет довольно хорошую библиотеку IPC: см. https://docs.python.org/2/library/ipc.html

0
ответ дан Eric 24 November 2019 в 12:41
поделиться

Сокеты TCP к localhost FTW.

2
ответ дан GEOCHET 24 November 2019 в 12:41
поделиться

Это не становится более простым, чем использование каналов, которые поддерживаются на каждой ОС, которую я знаю и могу быть получен доступ на в значительной степени каждом языке.

Выезд этот учебное руководство.

3
ответ дан kyrias 24 November 2019 в 12:41
поделиться

Распределенные вычисления обычно сложны, и Вам целесообразно пользоваться существующими библиотеками или платформами вместо того, чтобы перестроить колесо. Предыдущий плакат уже перечислил несколько этих библиотек и платформ. В зависимости от Ваших потребностей можно выбрать любого очень низкий уровень (как сокеты) или платформа высокого уровня (как CORBA). Не может быть универсального "использования этот" ответ. Вы должны узнать о распределенном программировании и затем найдете намного легче выбрать правильную библиотеку или платформу для задания.

Там существует дико используемая платформа C++ для распределенных вычислений, названных ACE и ДАО ШАРА CORBA (который является buildt на ACE). Там существуйте очень хорошие книги о ACE http://www.cs.wustl.edu/~schmidt/ACE/, таким образом, Вы могли бы смотреть.Береги себя!

4
ответ дан lothar 24 November 2019 в 12:41
поделиться

Если Вы готовы попробовать что-то немного различное, существует платформа ICE от ZeroC. Это - открытый исходный код и поддерживается на в значительной степени каждой ОС, о которой можно думать, а также поддержка языка наличия C++, C#, Java, Ruby, Python и PHP. Наконец, очень легко управлять (отображения языка адаптируются для установки естественно каждому языку). Это также быстро и эффективно. Существует даже усеченная версия для устройств.

4
ответ дан Jason Etheridge 24 November 2019 в 12:41
поделиться

Я думаю, что Вы захотите что-то на основе сокетов.

, Если бы Вы хотите RPC, а не просто IPC, я предложил бы что-то как XML-RPC/SOAP, который работает на основе HTTP и может использоваться с любого языка.

5
ответ дан Douglas Leeder 24 November 2019 в 12:41
поделиться

Как насчет Экономия Facebook ?

Экономия является платформой программного обеспечения для масштабируемой межъязыковой сервисной разработки. Это комбинирует программный стек с механизмом генерации кода для создания сервисов, которые работают эффективно и беспрепятственно между C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Какао, Smalltalk и OCaml.

5
ответ дан Swaroop C H 24 November 2019 в 12:41
поделиться

Вы могли бы хотеть попробовать YAMI, это очень просто все же функциональное, портативное и идет с привязкой к немногим языкам

8
ответ дан Bronek 24 November 2019 в 12:41
поделиться

Почему не D-шина? Это - очень простая система передачи сообщений, которая работает почти на всех платформах и разработана для устойчивости. Это поддерживается в значительной степени каждым языком сценариев в этой точке.

http://freedesktop.org/wiki/Software/dbus

10
ответ дан apenwarr 24 November 2019 в 12:41
поделиться

Для C++ проверьте IPC Повышения.
можно, вероятно, создать или найти некоторую привязку для языков сценариев также.

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

16
ответ дан Brian R. Bondy 24 November 2019 в 12:41
поделиться

YAMI - Еще одна инфраструктура обмена сообщениями - это легкая система обмена сообщениями и сетью.

5
ответ дан 24 November 2019 в 12:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: