Здравствуйтепосле каждого shmget память родителя увеличивается на 4К (похоже на размер до округленного сегмента PAGE_SIZE) - соответственно каждый потом увеличивается в размере на 4К. После долгого цикла создания, память постепенно сьедается.
Подскажите откуда беруться эти 4К и как их очищать в родителе/потомках
Спасибо заранее!
int shm_id;
for (i = 0; i < 500; i++) {
if ((shm_id = shmget (IPC_PRIVATE, 1, IPC_CREAT|0666)) < 0) {
perror("shared memory - create pipe status"); //exit(1);
exit(0);
}
if (((int *) shmat (shm_id, 0, 0)) == NULL) {
perror("shared memory attach - create pipe status");
exit(0);
}
pid = fork();
if (pid < 0) {
perror("fork");
printf("exit %d\n", i);
exit(1);
} else if (pid > 0) {
printf("parent, forked pid: %d\n", pid);
} else {
printf("child: %d, pid: %d\n", i, getpid());
sleep(10);
exit(1);
}
}