【单片机毕业设计】【dz-983】基于STM32单片机的宠物自动喂食器
2025/12/18 15:04:33
在之前的程序里,多线程间共享计数器很简单,只需将计数器存为全局变量。现在,我们要修改程序,实现不同进程间的同步。
为了让父进程和子进程共享计数器,我们把计数器存于共享内存中,该共享内存由my-shm函数分配,代码如下:
void * my-shm(size_t nbytes) { void *shared; #if defined(MAP_ANON) shared = mmap(NULL, nbytes, PROT_READ | PROT_WRITE, MAP_ANON | MAP_SHARED, -1, 0); #elif defined(HAVE_DEV_ZERO) int fd; /* memory map /dev/zero */ if ((fd = open("/dev/zero", O_RDWR)) == -1) return (MAP_FAILED); shared = mmap(NULL, nbytes, PROT_READ | PROT_WRITE | MAP_SHARED, fd, 0); close(fd); #else #error cannot determine what type of anonymous shared memory to use #endif return (shared); /* MAP_FAILED on error */ }如果系统支持