等于分段值的增加量.新分配的空 间设置为0.若相同的内存空间重新分配给同一个进程,则空间的
内容不确定.
返回值:若成功调用则返回值为0,否则返回-1.
例子:本例将包括上述共享数据空间操作的所有系统调用:
char * area1;
char buf[21];
int v;
/*取得或创建一个共享数据空间(系统特殊文件),名字为
/tmp/area1,长度为640,用户访问权限为0777*/
area1=sdget("/tmp/area1",SD_WRITE|SD_CREAT,640,0777);
if ((int)area1==-1) {
printf("get share data segment area1 failed\n");
exit(1);
}
/*取得共享数据段area1的版本号*/
v=sdgetv(area1);
/*申请访问共享数据段area1,若已有进程在访问该段则本进程挂
*起,否则进入访问并将该数据段加写锁*/
sdenter(area1,SD_WRITE);
/*对共享数据段访问,写10个a*/
strcpy(area1,"aaaaaaaaaa");
/*申请解除访问权限,若已有进程申请访问则激活该进程*/
sdleave(area1);
/*进程处理过程*/
/*等待取共享数据段area1的版本号*/
sdwaitv(area1,v);
/*重新申请访问共享数据段area1*/
sdenter(area1,SD_WRITE);
/*读取共享数据段中的数据*/
memcpy(buf,area1,20);
/*申请解除访问权限,若已有进程申请访问则激活该进程*/
sdleave(area1);
printf("the data now in area1 is [%s]\n",buf);
31.getenv()
功能:取得指定环境变量值.
语法:#include <unistd.h>
#include <stdlib.h.
char *getenv(name)
char *name;
说明:本系统调用检查环境字符串(格式如name=value),并在找到有指
定名字的环境值后,返回指向value字符串的指针.否则返回空指
针.
返回值:如前述.
例子:char * value;
value=getenv("HOME");
printf("HOME = [%s]\n",value);
/*将打印出HOME环境变量的值*/
32.putenv()
功能:修改或增加环境值.
语法:#include <stdlib.h>
int putenv(string)