Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

Как реализовать передачу даных между программами?

#c


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


Ответы

Ответ 1



Есть три стандартных способа: Очереди сообщений (есть два вида очередей - POSIX и System V) Каналы (именованные и не именованные) Разделяемая память Ваша задача - классический пример задачи "Производитель -> потребитель". Что бы не заморачиваться с кольцевыми буферами и прочим, рекомендую использовать именованный канал. man 3 mkfifof mkfifo - make FIFOs (named pipes) Create named pipes (FIFOs) with the given NAMEs. Самый простой пример: В командной строке выполняем команду mkfifo my_pipe Пишем и запускаем программу потребителя, которая открывает my_pipe как обычный файл и виснет на ожидании чтения. Пишем и запускаем программу поставщика, которая открывает my_pipe на запись и пишет данные туда. Начинается обмен данными по каналу. Здесь существенен порядок(!) запуска этих программ. Если первым запустить производителя, то программа свалится по попытке записи в канал, из которого никто не читает.

Ответ 2



Вообще, для таких вещей делают у одной из программ, к которой подключаться, некое API, SAPI — для того чтобы другая программа смогла получить нужное для себя.

Комментариев нет:

Отправить комментарий