关于共享内存的的问题~

bm1408 2006-05-11 09:22:14
最近在弄一个程序,要使用共享内存,要求很简单,就是父进程写进信息,子进程读出来
大家给一个例子吧
比如说:

struct student
{
int id;
char name[`11];
}STU[MAX];

父进程把这个结构体信息放入共享内存中,然后子进程读出并修改,
大家给个例子~~~
...全文
148 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
x86 2006-05-11
  • 打赏
  • 举报
回复
#include <stdlib.h>
#include <sys/shm.h>

#define ARRAY_SIZE 40000
#define MALLOC_SIZE 100000
#define SHM_SIZE 100000
#define SHM_MODE 0600 /* user read/write */

char array[ARRAY_SIZE]; /* uninitialized data = bss */

int
main(void)
{
int shmid;
char *ptr, *shmptr;

printf("array[] from %lx to %lx\n", (unsigned long)&array[0],
(unsigned long)&array[ARRAY_SIZE]);
printf("stack around %lx\n", (unsigned long)&shmid);

if ((ptr = malloc(MALLOC_SIZE)) == NULL)
printf("malloc error\n");
printf("malloced from %lx to %lx\n", (unsigned long)ptr,
(unsigned long)ptr+MALLOC_SIZE);

if ((shmid = shmget(IPC_PRIVATE, SHM_SIZE, SHM_MODE)) < 0)
printf("shmget error\n");
if ((shmptr = shmat(shmid, 0, 0)) == (void *)-1)
printf("shmat error\n");
printf("shared memory attached from %lx to %lx\n",
(unsigned long)shmptr, (unsigned long)shmptr+SHM_SIZE);

if (shmctl(shmid, IPC_RMID, 0) < 0)
printf("shmctl error\n");

exit(0);
}

23,124

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧