Как передать данные из одного процесса в другой в c? - PullRequest
3 голосов
/ 24 ноября 2010

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

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

Ответы [ 5 ]

1 голос
/ 24 ноября 2010

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

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

1 голос
/ 24 ноября 2010

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

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

0 голосов
/ 10 ноября 2013

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

0 голосов
/ 15 октября 2011

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

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

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

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

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

0 голосов
/ 24 ноября 2010

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

...