Имеется глобальный массив. Запускаю функцию в отдельном процессе, в ней изменяю некоторые значения в массиве, после выхода из функции оказывается, что значения в массиве остались прежними. Действительно ли функция,запущенная как отдельный процесс, не может изменить глобальные переменные?
>Имеется глобальный массив. Запускаю функцию в отдельном процессе, в ней изменяю некоторые
>значения в массиве, после выхода из функции оказывается, что значения в
>массиве остались прежними. Действительно ли функция,запущенная как отдельный процесс, не может
>изменить глобальные переменные?а как ты создаешь процессы ?
если ты создаешь процессы с помощью fork(), то твой глобальный массив копируется, т.е. для каждого процесса появляется своя собственная копия массива и каждый процесс работает со своей копией массива и никак не влияя на остальных. и когда процесс завершает свою работу все его данные пропадают.
если с помощью pthread_create(), то скорее всего где-то напортачил. было бы хорошо посмотреть код
Кажись, в случае fork() можно пользовать динамический массив. В родителе выделил памяти и сделал потомка. Потомок что-то меняет и в родителе эти изменения видны. Впрочем, как и в других потомках.
в случае fork() такого быть не может.
Хм... Действительно. Хотя адрес один и тот же.PS. Все забыл с этой работой... Блин...
Вообще-то у меня как раз динамический массив и процесс создаю с помощью fork(). Спасибо за совет - попробую pthread_create().