#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#define PERM S_IRUSR | S_IWUSR
int main(void)
{
int shmid;
char *p_addr,*c_addr;
if(argc!=2)
{
fprintf(stderr,"Usage:%s\n\a",argv[0]);
exit(1);
}
/*创建共享内存*/
shmid=shmget(IPC_PRIVATE,1024,PERM);
if(shmid==-1)
{
fprintf(stderr,"shmget failed\n");
exit(EXIT_FAILURE);
}
if(fork())
{
/*映射共享内存*/
p_addr=shmat(shmid,0,0);
if(p_addr==(void *)-1)
{
fprintf(stderr,"shmat failed\n");
exit(EXIT_FAILURE);
}
memset(p_addr,'\0',1024);
strncpy(p_addr,argv[1],1024);
wait(NULL);
/*删除共享内存*/
if(shmdt(p_addr)==-1)
{
fprintf(stderr,"shmdt failed\n");
exit(EXIT_FAILURE);
}
}
else
{
sleep(2);
c_addr=shmat(shmid,0,0);
printf("Client get %s \n",c_addr);
}
return 0;
}
/*创建共享内存*/ shmid=shmget(IPC_PRIVATE,1024,PERM);
最新推荐文章于 2023-09-02 13:01:35 发布