Используя C, как я могу получить доступ к тому же блоку памяти, что и другая программа на C? - PullRequest
2 голосов
/ 04 декабря 2010

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

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

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

Ответы [ 4 ]

6 голосов
/ 04 декабря 2010

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

3 голосов
/ 04 декабря 2010

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

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

3 голосов
/ 04 декабря 2010

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

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

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

0 голосов
/ 04 декабря 2010

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

...