Linux, как выполнить дочерний двоичный файл и эффективно передать полезную нагрузку?

0

до сегодняшнего дня, когда я запускал дочернюю программу в своем приложении (распределенные вычисления), я использовал execv, и в качестве аргумента я передавал имя файла, в котором хранилась полезная нагрузка.

Итак, у меня было два файла:

1) child-program.binary(+x)

2) child-program.payload(+r)

Когда child-program.binary выполнялся, он знал, что он должен загружать child-program.payload при запуске, затем выполнялись вычисления, а новая полезная нагрузка хранилась в файле child-program.payload.

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

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

Каковы возможные варианты?

Спасибо всем !

Теги:

1 ответ

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

Преимущество вашего файлового подхода заключается в том, что он является энергонезависимым, и данные могут быть легко распределены по всему миру в виде файла.

Основываясь на вашей мысли о трубах, я предполагаю, что ваши "распределенные вычисления" находятся на одном узле. Вы также можете использовать общую память: shm_open и передать имя имени файла вашей общей памяти ребенку. КСТАТИ. Трубы или FIFO позволяют легко синхронизировать с помощью poll/select. AFAIK вам нужно немного больше инфраструктуры для синхронизации доступа к общей памяти.

  • 0
    Спасибо, попробую шм подойти. Моя распределенная система работает на распределенных узлах (см. Raspberry pi gridman). Имя полезной нагрузки / двоичного файла динамически создается при порождении задачи, поэтому каждая задача имеет различное имя файла / имя полезной нагрузки - что позволяет мне запускать несколько рабочих (согласно количеству ядер процессора) в одном и том же каталоге.

Ещё вопросы

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