当使用 exec 命令执行一个命令或启动一个脚本文件时,会启动一个子进程,但进程 ID 号还会使用父进程的进程 ID 号, 对于父进程的局部变量 exec 命令启动的脚本进程是不 可见的,而父进程导出的环境变量还可以引用到。 当 exec 命令启动的脚本进程执行结束 后,不会返回到父进程,而是将父进程终止。 也可以理解为 exec 启动的脚本进程替代了 当前的父进程,并继承了父进程的环境变量, 当脚本执行结束后启动脚本进程的当前环 境都将会被清除。
-
语法格式为:
exec 命令
通常情况下命令是一个脚本文件。当这个脚本结束时,相应的进程就结束了。
-
例子:通常情况下,一个命令或脚本进程结束后,会回到启动命令或脚本进程的父进程,下面例子说明。
-
例子:通过 exec 命令启动的命令或脚本进程执行结束后,不会回到启动脚本的父进程, 而是会终止启动脚本的父进程, 因为使用的进程 ID 还是父进程的进程 ID,感觉上是没 有启动新的进程,还在父进程中执行脚本,但是, 实际上还是启动了新的子进程(对父进 程的环境复制),只是进程 ID(PID)还使用父进程的,当脚本执行结束,父进程也不存在了, 不存在返回父进程。
-
使用 exec 命令执行 Java 程序,命令格式如下:
exec java classname exec java -jar jarname
-
使用 exec 命令执行 Java 程序,当程序执行结束后,执行 exec 命令的父进程也同样会结束。例子如下:
- exec 命令指定文件描述符在后面的内容中会详细说明。
- 例子:重定向输出