UNIX 系统中的共享内存与内存映射文件技术解析
1. 共享内存变量操作
在共享内存的操作中,若变量不存在,会在对应代码行(44 - 48)进行空间计算。新变量和值会在第 54 - 57 行追加到共享内存区域,第 58 行则会在末尾添加第二个空字节,以此标记变量列表的结束。
下面是用于按名称删除变量的模块代码:
/* globun.c */
#include "globvar.h"
/*
* Unset a variable :
*/
void
unset_var(const char *varname) {
int z; /* status code */
char *var = get_var(varname); /* Locate variable if it exists */
char *cp; /* utility char pointer */
int nlen = strlen(varname); /* Length of variable name */
if ( !var )
return; /* Variable is already unset */
/*
* Now delete the variable :
*/
var = var - nlen - 1; /* Point to start of entry */
for ( cp=