#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.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(int argc, char **argv)
{
int shmid;
char *f_addr, *c_addr;
if(argc != 2)
{
printf("Usage: ./shm ni hao \n");
exit(1);
}
if((shmid = shmget(IPC_PRIVATE, 1024, PERM)) < 0) // (()())()
{
printf("shmget error:%s\n", strerror(errno));
exit(1);
}
printf("shmget ok!\n");
/* if( fork() < 0)
{
printf("fork error:%s\n", strerror(errno));
exit(1);
}*/
if(fork())
{
printf("father process...\n");
f_addr = shmat(shmid, 0, 0);
memset(f_addr, '\0', 1024);
strncpy(f_addr, argv[1],1024);
printf("father exit!\n");
wait(NULL);
// sleep(3);
}
else
{
sleep(1);
printf("child process...\n");
c_addr = shmat(shmid, 0, 0);
printf("client get:%s\n", c_addr);
}
}
|