#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdlib.h>
#include <string.h>
#include<unistd.h>
int main(int argc, const char *argv[])
{
//创建key值
key_t key = ftok("./", 'a');
if(key < 0)
{
perror("ftok");
return -1;
}
printf("key = %#x\n", key);
//创建共享内存
int shmid = shmget(key, 32, IPC_CREAT|0664);
if(shmid < 0)
{
perror("shmget");
return -1;
}
printf("shmid = %d\n", shmid);
//共享内存的映射
void* shmaddr = shmat(shmid, NULL, 0);
int *p=(int *)shmaddr;
printf("请输入一个整形");
fflush(stdout);
read(0,p,4);
p=p+1;
char* pstr ="";
printf("请输入字符串:\n");
bzero((char*)p,28);
read(0,(char*)p,28);
//system("ipcs -m");
return 0;
}
B
目录
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdlib.h>
#include <string.h>
#include<unistd.h>
int main(int argc, const char *argv[])
{
//创建key值
key_t key = ftok("./", 'a');
if(key < 0)
{
perror("ftok");
return -1;
}
printf("key = %#x\n", key);
//创建共享内存
int shmid = shmget(key, 32, IPC_CREAT|0664);
if(shmid < 0)
{
perror("shmget");
return -1;
}
printf("shmid = %d\n", shmid);
//共享内存的映射
void* shmaddr = shmat(shmid, NULL, 0);
int *p=(int*)shmaddr;
write(1,p,4);
p=p+1;
printf("%s\n",(char*)p);
//system("ipcs -m");
return 0;
}