Как передать данные от одного процесса другому в c?
Есть ли способ передать данные (например, значение int) из одного процесса в другой процесс в c?
По моему опыту, мы просто можем посылать сигнал от одного процесса другому. Но похоже, что нет способа "прикрепить" некоторую информацию вместе с этим сигналом к другому процессу.
5 ответов
Вы можете использовать один из различных доступных механизмов взаимодействия между процессами.
Используйте Google. В качестве ссылки вы также можете посмотреть здесь
С sigqueue
Функция, вы можете передать одно целое число или указатель вместе с сигналом (но имейте в виду, указатели будут бесполезны, если целью сигнала является другой процесс, так как разные процессы не разделяют адресное пространство).
Некоторые другие методы - это каналы, разделяемая память (стиль POSIX или SysV), файлы,...
Чистый, портативный, мощный способ - это использование Socket.
Вы можете использовать трубы, чтобы сделать это. Основное назначение каналов - обмен данными между различными процессами.
Трубы - это самый простой механизм, предлагаемый операционной системой для межпроцессного взаимодействия. Канал представляет собой коммуникационный буфер между двумя процессами: он имеет два дескриптора, один для записи, другой для чтения. Операции записи и чтения выполняются в порядке FIFO (первым пришел-первым вышел).
Существует два вида каналов: безымянные каналы и именованные каналы (также известные как FIFO).
- Безымянные каналы разрешают связь только между иерархически связанными процессами (родительскими и дочерними процессами);
- Именованные каналы обеспечивают связь между любыми процессами. Специальный файл создается в файловой системе через
Если вам нужен пример кода, просто зайдите сюда: http://pastebin.com/1W216nyN
Я думаю, что мы можем использовать глобальную переменную между процессами, не уверен, но. Если кто-то попробовал, пожалуйста, дайте мне знать. Если мы используем заголовок, который содержит extern valriable, мы можем использовать это в другом main(), который является ничем иным, как независимой программой (процессом). но мы должны связать два main() вместе, которые выполняются.