Используя C, как я могу получить доступ к тому же блоку памяти, что и другая программа на C?
Итак, я в первый час изучаю C. Возможно, я перейду на C++ сегодня вечером.
Я хотел бы создать две программы командной строки, использующие C, которые могут "общаться" друг с другом. Первая мысль, которая пришла в голову, - это передавать информацию между ними, записывая и опрашивая файлы. Тем не менее, я полагаю, что C предоставляет все методы, которые мне нужны для прямого выделения памяти и доступа к ней, и это было бы намного быстрее и более разумным методом.
Может кто-нибудь привести пример или совет?
4 ответа
То, что вы просите, называется общей памятью. К сожалению, разделяемая память не является частью языка Си как таковой, но является особенностью операционной системы. Поскольку вы не указали, какую операционную систему вы используете, я указываю вам на учебник по общей памяти Unix SysV.
Технология, на которую вам нужно обратить внимание, это "Общая память". Это зависит от ОС, а не в стандартной библиотеке C.
Поскольку вы не указали ОС, вам придется провести собственное исследование. Если вы используете Windows, проверьте эту страницу.
Я полагаю, что вы имеете в виду сегмент общей памяти. Вы также можете использовать каналы или сокеты для связи между двумя процессами. В зависимости от приложения, у каждого есть свое преимущество.
Вот отличное руководство по межпроцессному взаимодействию, которое охватывает саму тему помимо трубок, сокетов.
Если вы находитесь в среде Unix, вы можете использовать shmget() и shmat() для создания и присоединения сегмента общей памяти. Оба процесса оценивают сегмент с помощью общего целочисленного ключа.