问题描述
我有两个通过共享内存通信的c应用程序,其分配方式如下:
j
当我重新启动那些应用程序时,分配的内存保持可用,这对我的任务来说是很好的。但是,有时我必须更改n
,所以旧数据变得无效。
我找到了j < n
工具,该工具似乎能够手动取消分配共享内存区域,这正是我要寻找的。但是它需要my_type * shmmap(const char * filename) {
int shm_fd = shm_open(filename,O_CREAT | O_RDWR,0666);
if(shm_fd == -1) {
return nullptr;
}
if(ftruncate(shm_fd,sizeof(my_type))) {
close(shm_fd);
return nullptr;
}
my_type * ret = (my_type *)mmap(0,sizeof(T),PROT_READ | PROT_WRITE,MAP_SHARED,shm_fd,0);
close(shm_fd);
if(ret == MAP_FAILED) {
return nullptr;
}
return ret;
}
或my_struct
,而且我真的不知道如何仅知道用于调用ipcrm
函数的文件名来获取那些值。我可以使用shmem-id
命令看到很少的共享内存区域,而且我可以猜到哪个是我的大小,但这似乎行不通。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)