Используя C, как я могу получить доступ к тому же блоку памяти, что и другая программа на C?

Итак, я в первый час изучаю C. Возможно, я перейду на C++ сегодня вечером.

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

Может кто-нибудь привести пример или совет?

4 ответа

Решение

То, что вы просите, называется общей памятью. К сожалению, разделяемая память не является частью языка Си как таковой, но является особенностью операционной системы. Поскольку вы не указали, какую операционную систему вы используете, я указываю вам на учебник по общей памяти Unix SysV.

Технология, на которую вам нужно обратить внимание, это "Общая память". Это зависит от ОС, а не в стандартной библиотеке C.

Поскольку вы не указали ОС, вам придется провести собственное исследование. Если вы используете Windows, проверьте эту страницу.

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

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

http://beej.us/guide/bgipc/output/html/multipage/index.html

Если вы находитесь в среде Unix, вы можете использовать shmget() и shmat() для создания и присоединения сегмента общей памяти. Оба процесса оценивают сегмент с помощью общего целочисленного ключа.

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