Linux入门教程:有关Linux exec函数的几个问题
一)概述:
- exec函数允许将一个可执行程序进程的控制转移到另一个可执行程序的进程上。
- exec调用并没有生成新的进程,而是在原有进程的基础上,替换原有进程的正文,调用前后是同一个进程,进程的PID不变。
- 在Linux中并没有名为exec的函数,它们只有一个系统调用:execve.库提供的所有函数只有这个系统调用的封装。
- execve系统调用可以查找指定的文件,这里主要有三种可执行文件,第一是可执行脚本,第二是可执行目标文件,第三是二进制文件。
二)脚本中fork/exec/source之间的区别:
通过以下的脚本对这三种方式进行说明:
more test1.sh test2.sh
::::::::::::::
test1.sh
::::::::::::::
#!/bin/bash
var1=“OLD_VALUE”
export var1
echo “PID for test1.sh before exec/source/fork:$$”
echo “test.sh: \$var1 is $var1”
case $1 in
exec)
echo “using exec.。.”
exec 。/test2.sh
;;
source)
echo “using source.。.”
source 。/test2.sh
;;
*)
echo “using fork.。.”
。/test2.sh
esac
echo -e “\n\rPID for test1.sh after exec/source/fork;$$”
echo “test1.sh \$var1 is $var1”
::::::::::::::
test2.sh
::::::::::::::
#!/bin/bash
echo -e “\r\nPID for test2.sh; $$”
echo “test2.sh get \$var1=$var1 from test2.sh”
var1=“NEW_VALUE”
export var1
echo “test2.sh: \$var1 is $var1”
相关推荐
farwang 2020-11-25
星愿心愿 2020-11-24
tianhuak 2020-11-24
zhjn0 2020-11-24
昭君出塞 2020-11-23
bluecarrot 2020-11-23
linuxwcj 2020-10-21
以梦为马不负韶华 2020-10-20
彼岸随笔 2020-10-20
yutou0 2020-10-17
applecarelte 2020-10-16
ourtimes 2020-10-16
waterhorse 2020-09-19
MRFENGG 2020-11-11
rainandtear 2020-10-30
kyssfanhui 2020-10-20
liuhangtiant 2020-10-20