Thanks to the headstart from Erwin Andreasen, I now feel rather comfortable with declaring and finding shared memory segments. However, it seems to me that unless I can convince malloc to allocate from one or several, they only hold limited usefulness (unless I write my own memory manager, which I would rather not do.) So, does anyone know if there id either a way to convince malloc to manage a buffer i tell it about, or of a simple replacement for malloc() that does? By the way, for anyone interested in learning more about shared memory, here is a program I wrote under Linux kernel 2.0.33 which demonstrates some of what I imagine are the more important uses. It's dumb, but it gets to the point easily. #include <stdio.h> #include <sys/shm.h> main() { int id; unsigned int *segptr; id = shmget(0x11223344, 4, IPC_CREAT|IPC_EXCL|SHM_W|SHM_R); if (id<0) { id = shmget(0x11223344, 0, SHM_W|SHM_R); if (id>=0)printf("Create failed, segment found: %x\n", id); else { printf("Fatal: cannot create nor find the segment!\n"); perror("shmget"); exit(-1); } } else printf("Segment created: %x\n", id); system("ipcs -m"); segptr = (unsigned int *)shmat(id, 0, 0); printf("The int before incrementing: %u\n", *segptr); (*segptr)++; printf("The int after incrementing: %u\n", *segptr); if (*segptr >= 5) { printf("Destroying the buffer.\n"); shmctl(id, IPC_RMID, 0); } shmdt((char *)segptr); } +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST