当前位置:  技术问答>linux和unix

linux环境变量操作

    来源: 互联网  发布时间:2017-03-30

    本文导语:  《Unix环境高级编程》中第七章讲到,对环境变量进行操作的函数有: putenv---取形式为“name=value”的字符串,将其放到环境表中。 setenv---将name设置为value。 unsetenv---删除name的定义。 并且有下列一段话: 注意putenv和s...

《Unix环境高级编程》中第七章讲到,对环境变量进行操作的函数有:
putenv---取形式为“name=value”的字符串,将其放到环境表中。
setenv---将name设置为value。
unsetenv---删除name的定义。

并且有下列一段话:
注意putenv和setenv的区别。setenv必须分配存储区,以便依据其参数创建“name=value”的字符串。同时,putenv则无需将传送给它的参数字符串直接放到环境中。

我先问下,这个地方是不是说反了?

还有一个问题。
书上将增加一个字符串和修改一个现有的字符串要困难得多。环境表和环境字符串通常占用的进程地址空间的顶部,所以不能像高地址方向(向上)扩展;同时不能移动在它之下的各栈帧,所以不能向低地址方向(向下)扩展。两者组合使得该地址空间的长度不能再增加。

这个地方,为什么不能移动在它之下的各栈帧呢?

|
putenv和setenv的内部操作时不同的!
楼主都说清楚了,下面的图可以更清楚的显示这个过程(省略了查找和删除原有变量的过程)


int putenv(char *string);
----------
| env[0] |  ---
----------
| env[1] |  ---
----------
| env[2] |  ---
----------
| env[3] |  ---
----------
| env[4] |  ---> string
----------
| ...... | 
----------
| NULL   |
----------


int setenv(const char *name, const char *value, int overwrite);
----------
| env[0] |  ---
----------
| env[1] |  ---
----------
| env[2] |  ---
----------
| env[3] |  ---
----------
| env[4] |  ---> newstr = malloc(strlen(name) + strlen(value) + 1 + 1);
----------       strcpy(newstr, name), strcat(newstr, "="), strcat(newstr, value);
| ...... | 
----------
| NULL   |
----------

|
你man一下吧。

    
 
 

您可能感兴趣的文章:

  • Linux下如何查看,设置环境变量并立即生效
  • 程序中获取的环境变量能够根据Linux系统中相应环境变量而变化吗?
  • linux 下设置环境变量 使用了setenv 和putenv 在程序结束以后 发现变量又变回去了
  • Linux能否自定义系统变量一如windows里的系统环境变量可以"新建"一样
  • linux动态链接库里全局变量和静态变量会导致动态库不可重入吗?
  • linux内核怎么定义汇编全局变量及在c文件中使用这个变量?有关0。11下的字符回显
  • [linux shell] 如何获得以一个变量的值为名的变量的值
  • linux 下环境变量如何设呀!
  • Linux 将自带的jdk设置成环境变量
  • Linux下环境变量问题以及FLEX安装问题
  • 在LINUX下安装SYBASE 需添加环境变量问题(在线等待)
  • 在Linux Shell scripts下变量如何取linux的命令运行值
  • 我想问个关于Linux系统下Sybase环境变量的问题
  • linux下到底如何设置环境变量?在哪设置?详细具体点
  • linux中大量的全局变量怎么体现结构化的程序设计?
  • linux 如何在两个.c文件中引用对方的变量。
  • linux~shell~如何取变量的值并在后面添加字符?
  • linux下,如何修改环境变量?
  • 请教:linux平台(redhat7.2)下的环境变量在哪里设置?
  • 在linux下,如何查询系统的预定义变量?
  • ACE 如何在linux下设置环境变量
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • linux 怎么也能用鼠标操作?? 我的系统是Ubuntu ,不是说linux都用代码操作么??
  • mount命令(linux操作系统)挂载卸载文件系统(cifs,光驱,nfs等)方法介绍
  • 请问各位,我想学习linux,是装linux操作系统还是在虚拟机下装操作系统呢?那种好点啊
  • linux下不使用sudo命令执行docker的操作步骤
  • 请问LINUX操作系统是怎样对外围设备进行操作的
  • Linux下GCC内置原子操作函数(多线程资源访问)介绍
  • 请问命令行操作下怎么改Linux操作系统的日期和时间?
  • Linux下u盘文件系统相关操作
  • 在linux操作系统上向ftp服务器(linux系统)上上传文件,我要纪录操作日志,得到上传到ftp服务器上的文件的路径问题?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用的是linux,kde,gnome为中文环境,如果把它改为英文环境。
  • 如何在linux环境下配置java环境变量?
  • 因进修,需要学习《Unix 环境高级编程》一书,完全没接触过Unix/Linux,请推荐一个学习环境。
  • 有哪些中文linux,有哪些外挂的中文环境,这些中文环境之间兼容吗?
  • [讨论]学习linux使用实linux环境与虚拟linux环境的利与弊
  • 求教: Linux环境下有没有类似VC++那样的、比较容易使用的集成开发环境?
  • 想看linux内核源代码,另外手头上有一本《unix环境高级编程》,需要先把《unix环境高级编程》看完之后再看内核吗?
  • Linux下怎么搭建QT的环境,QT编程有没IDE?要用QT编程是不是得先编译QT环境?
  • 请问现在LINUX下有没有类BORLAND C++BUILDER VISUAL C++这样的集成IDE环境,我记得以前BORLAND承诺会推出类似的开发环境,可是我没有发现
  • 想学linux下程序开发,不知道买哪本书好《UNIX环境高级编程》(中文第一版)还是《UNIX环境高级编程》(英文第二版)
  • linux内核编译一定要在linux环境下么?
  • 请问:构建嵌入式linux环境时,“Linux内核的移植”是达到什么目的啊?
  • Linux环境下QT交叉编译环境的移植问题请教帮忙
  • 关于学习linux环境编程的规划
  • 最近想学linux 那儿有linux虚拟机下载 win7环境下的
  • 初学Linux要看什么书?, 请问Linux下C语言编程怎么设置环境?
  • Linux桌面环境 icewm
  • 有在Window2000下学习操作Linux命令等的模拟Linux环境的软件吗?
  • redhat和GUN/LINUX两者编译环境有什么不同吗?
  • 如何学好Linux环境下的编程?
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • secureCRT下Linux终端汉字乱码解决方法
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • Linux c字符串中不可打印字符转换成16进制
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,