Lab1&2_Environment_Variable

Task1:

使用 printenv 或env 命令打印环境变量。

(补充可打印特殊环境变量printenv PWD或 env | grep PWD)

 

Printenv PWD, env |grep PWD

用export 或者 unset 去设置或者删除环境变量

Task2:

编译myprintenv.c, 运行且将结果保存到file,“a.out>file”

 

 

注释掉子进程里的 printenv()Line①,但不注释父进程的。重新编译查看结果,并保存到另一个文件

运行,./a.out

子进程是父进程的副本,它将获得父进程的环境变量、数据空间、堆、栈等资源的副本。但是,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间,它们之间共享的存储空间只有代码段。

用diff命令比较两个文件的结果,得出结论

File:

输出结果相同,父子进程的环境变量相同,子进程会完全继承父进程的环境变量

 

两个二进制文件相同,diff就什么也不显示。

结论:两次的输出相同,一次是父进程的输出,一次是子进程的输出。结合说明文档,可以看出父子进程有着相同的环境变量。

Task3  execve()

请编译并运行以下程序,并描述您的观察结果。这个程序简单地执行一个名为/usr/bin/env的程序,它打印出当前进程的环境变量。

结果:无输出   ,传递给文件的新环境变量数组为NULL,所以没有环境变量被打印出来

将第一行改成execve("/usr/bin/env", argv, environ)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值