这文章 不知怎么了被仍进回收站了;
除了用shm_open来mmap一块共享内存
用普通文件也可:
#include "util.h"
#include
#include
#include
struct _shareobj
{
sem_t mutex;
int count;
}shareobj;
int main(int argc, char**argv)
{
int fd = open("./share.tmp" , O_RDWR|O_CREAT, 0777);
//write(fd,&shareobj,sizeof(shareobj));
ftruncate(fd,sizeof(shareobj));
struct _shareobj * ptr= mmap(NULL,sizeof(shareobj),PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
sem_init(&ptr->mutex,1,1);
ptr->count = 0;
setbuf(stdout,NULL);
if(0 == fork()){
for(int i = 0;
i < 10 ;
++i){
sem_wait(&ptr->mutex);
printf("child , count : %d\n" , ptr->count++);
sem_post(&ptr->mutex);
}
return 0;
}for(int i = 0 ;
i < 10 ;
++i){
sem_wait(&ptr->mutex);
printf("parent , count:%d\n" , ptr->count++);
sem_post(&ptr->mutex);
}return 0;
}
【帮别人写作业|共享内存信号量】