“exec myprog&”意外行为

时间:2013-04-22 14:19:07

标签: bash shell unix

运行这些shell命令时:

SH1$ bash
SH2$ exec date &
[1] 375
SH2$ Mon Apr 22 15:04:36 BST 2013
[1]+  Done                    exec date
SH2$

&优先于exec,并使SH2进程运行(在ksh和Solaris / bin / sh中的结果相同)。

这是为什么?它是明确定义的(或必需的)行为,还是留给每个实现?

2 个答案:

答案 0 :(得分:1)

是的,这是标准行为。请参阅POSIX shell grammar,并注意exec甚至没有明确涵盖;它被视为普通的cmd_name

答案 1 :(得分:-1)

exec替换当前的shell并执行命令

exec date

有效地运行日期和退出,让你“失去”你的原始外壳

exec date &

在子进程中运行exec。这是& amp;的定义行为。运营商。 结果与

非常相似
( exec date )

&安培;和()都创建一个新的子进程,然后在新进程的上下文中执行命令。