帮别人写作业|共享内存信号量

这文章 不知怎么了被仍进回收站了;
除了用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; }

【帮别人写作业|共享内存信号量】

    推荐阅读