大数据全系列 教程
1869个小节阅读:468k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
#6、 横跨父子进程的变量
案例实战
xxxxxxxxxx
[root@node1 ~]# vim son_proc.sh
#!/bin/bash
echo "inner son_prc.sh a="$a
echo "---------"
[root@node1 ~]# chmod +x son_proc.sh
# 父进程中定义a=110
[root@node1 ~]# a=110
# ./son_proc.sh执行时启动一个子进程,此时变量a还未被共享,所以在子进程中获取不到变量a的值
[root@node1 ~]# ./son_proc.sh
inner son_prc.sh a=
---------
# 将a导出为环境变量,父进程中定义的变量a被共享了,子进程就可以访问了
[root@node1 ~]# export a
[root@node1 ~]# ./son_proc.sh
inner son_prc.sh a=110
---------
子进程睡20s,在此期间修改环境变量的值,查看export是导出还是共享
xxxxxxxxxx
[root@node1 ~]# vim son_proc.sh
#!/bin/bash
echo "before sleep inner son_prc.sh a="$a
echo "---------"
sleep 20
echo "after sleep inner son_prc.sh a="$a
[root@node1 ~]# echo $a
110
# 启动子进程时 a=110 ,并且之前export a
[root@node1 ~]# ./son_proc.sh &
[1] 28687
[root@node1 ~]# before sleep inner son_prc.sh a=110
---------
# 再次修改父进程中的变量a
[root@node1 ~]# a=220
# 并将修改后的变量a导出为环境变量
[root@node1 ~]# export a
[root@node1 ~]#
[root@node1 ~]# after sleep inner son_prc.sh a=110
[1]+ 完成 ./son_proc.sh
sleep后,子进程不能打印220,而是打印110 。说明:父进程修改值不会影响子进程的变化,子进程值的修改也不会影响父进程的值。fork子进程后,共享变量的值在内存中是读时共享,写时复制。
扩展: 管道两边的命令在当前shell的两个子进程中执行。
xxxxxxxxxx
[root@node1 ch4]# b=22&&echo $b
22
[root@node1 ch4]# echo $b
22
[root@node1 ch4]# unset b
[root@node1 ch4]# b=22|echo $b
[root@node1 ch4]# echo $b
[root@node1 ch4]#