Как передать данные от одного процесса другому в c?

Есть ли способ передать данные (например, значение int) из одного процесса в другой процесс в c?

По моему опыту, мы просто можем посылать сигнал от одного процесса другому. Но похоже, что нет способа "прикрепить" некоторую информацию вместе с этим сигналом к ​​другому процессу.

5 ответов

Вы можете использовать один из различных доступных механизмов взаимодействия между процессами.

Используйте Google. В качестве ссылки вы также можете посмотреть здесь

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

Некоторые другие методы - это каналы, разделяемая память (стиль POSIX или SysV), файлы,...

Чистый, портативный, мощный способ - это использование Socket.

Вы можете использовать трубы, чтобы сделать это. Основное назначение каналов - обмен данными между различными процессами.

Трубы - это самый простой механизм, предлагаемый операционной системой для межпроцессного взаимодействия. Канал представляет собой коммуникационный буфер между двумя процессами: он имеет два дескриптора, один для записи, другой для чтения. Операции записи и чтения выполняются в порядке FIFO (первым пришел-первым вышел).

Существует два вида каналов: безымянные каналы и именованные каналы (также известные как FIFO).

  • Безымянные каналы разрешают связь только между иерархически связанными процессами (родительскими и дочерними процессами);
  • Именованные каналы обеспечивают связь между любыми процессами. Специальный файл создается в файловой системе через

Если вам нужен пример кода, просто зайдите сюда: http://pastebin.com/1W216nyN

Я думаю, что мы можем использовать глобальную переменную между процессами, не уверен, но. Если кто-то попробовал, пожалуйста, дайте мне знать. Если мы используем заголовок, который содержит extern valriable, мы можем использовать это в другом main(), который является ничем иным, как независимой программой (процессом). но мы должны связать два main() вместе, которые выполняются.

Другие вопросы по тегам