#include <stdio.h>
#include <sys/ipc.h>
#include <sys/types.h>
#include <stdlib.h>
#include <string.h>
#include <sys/shm.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
key_t key=ftok("./",'a');
if(key<0)
{
perror("ftok");
return -1;
}
//共享内存
int shmid=shmget(key,32,IPC_CREAT|0777);
if(shmid<0)
{
perror("shmget");
return -1;
}
//映射
void* shmaddr=shmat(shmid,NULL,0);
if((void*)-1==shmaddr)
{
perror("shmat");
return -1;
}
//打印
char arr[]="123456";
int *pa=(int*)shmaddr;
*pa=0;
char* pb=(char*)pa+4;
strcpy(pb,arr);
while(1)
{
if(*(int*)shmaddr==1)
{
printf("%s\n",((char*)shmaddr)+4);
sleep(1);
*(int*)shmaddr=0;
}
}
shmdt(shmaddr);
return 0;
}
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/types.h>
#include <stdlib.h>
#include <string.h>
#include <sys/shm.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
key_t key=ftok("./",'a');
if(key<0)
{
perror("ftok");
return -1;
}
//共享内存
int shmid=shmget(key,32,IPC_CREAT|0777);
if(shmid<0)
{
perror("shmget");
return -1;
}
//映射
void* shmaddr=shmat(shmid,NULL,0);
if((void*)-1==shmaddr)
{
perror("shmat");
return -1;
}
//逆置
while(1)
{
if(*(int*)shmaddr==0)
{
char temp;
char *str=(char*)shmaddr+4;
char *end=(char*)shmaddr+9;
while(str<end)
{
temp=*str;
*str=*end;
*end=temp;
str++;
end--;
}
*(int*)shmaddr=1;
}
}
shmdt(shmaddr);
return 0;
}