2017-01-29 3 views
-1

У меня есть 4 программы main.c, delete.c, insert.c и search.c. Они предназначены для удаления, вставки и поиска списка ссылок, который был создан в main.c. Я вызываю/разворачиваю каждую программу из main.c. Проблема заключается в том, что использует список ссылок среди всех четырех и выполняет несинхронизированные операции над списком. Какой подход мне необходим для обмена списком?Совместное использование структуры данных между несколькими программами

Примечание: У каждой есть собственная собственная функция.

+1

У вас действительно есть 4 программы? Потому что я вижу 4 исходных файла, которые могут быть скомпилированы в одном проекте/программе. – Alex

+0

Существует много способов взаимодействия [* inter-process communication *] (https://en.wikipedia.org/wiki/Inter-process_communication). –

+0

@Alex каждый имеет функцию main(). –

ответ

0

Один из способов - использовать общую память между процессами.

int shmid = shmget(1234, 1024, IPC_CREAT | 0666); //for one of the programs 
int shmid = shmget(1234, 1024, 0666); //for remaining of the programs 
void * memptr = shmat(shmid, NULL, 0); 
char *ptr = memptr; 
//ptr is now a character array of 1024 bytes 
//you can use this memory for creating your data structures 

1234 является ключевым для пространства памяти, вы можете использовать любое значение INT, но это значение должно быть одинаковым для всех программ, которые обращаются к этой площади. 1024 - необходимый размер памяти.

P.S. Я не проверил проверку ошибок, чтобы код был прост. Обратитесь к man-страницам shmget и shmat для получения более подробной информации.