考虑到这两个程序:
//in
#define MAX 50
int main(int argc, char* argv[]) {
int *count;
int fd=shm_open("/count",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);
int ret=ftruncate(fd,sizeof(int));
count=mmap(0,sizeof(int),PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
while ((*count)==MAX);
(*count)++;
}
//out
int main(int argc, char* argv[]) {
int *count;
int fd=shm_open("/count",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);
int ret=ftruncate(fd,sizeof(int));
count=mmap(0,sizeof(int),PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
(*count)--;
}
我有两个问题:
1)为什么这个程序不能正常工作(不保证count的数量永远不会超过50)?
2)如何纠正这两个程序来做到这一点?
谢谢。