gpt4 book ai didi

bash - “exec some_cmd &” 在 bash 中意味着什么

转载 作者:行者123 更新时间:2023-11-29 09:12:53 26 4
gpt4 key购买 nike

我在 this script 中找到了 exec some_cmd & 的用法:

...
exec elixir \
-pa _build/prod/consolidated \
--no-halt \
--erl "+A$THREAD_COUNT" \
--erl "+K true" \
--erl "-smp auto" \
--erl "+scl false" \
--erl "+spp true" \
--erl "+swt low" \
--erl "+sbwt long" \
--sname $NODE \
--cookie $COOKIE \
-S mix run \
--no-compile \
$@ \
&
...

exec some_cmd 将 shell 替换为 some_cmdsome_cmd & 在后台生成 some_cmd 作为子进程。那么将它们结合起来会发生什么?

我用 bash 3.2 试了一下,结果显示它看起来像是生成了一个后台进程:

# script
echo "Shell PID: $$"
exec sh -c 'echo "Child PID: $$"' &
BG_PID=$!
echo "Background process PID: $BG_PID"

# output
Shell PID: 8852
Background process PID: 8853
Child PID: 8853

虽然我不确定它是否与some_cmd &完全相同。

最佳答案

exec 命令在这种情况下无效。通常,exec 会在调用 execve 之前阻止 bash fork ,但在这种情况下,bash 无论如何都会 fork ,因为你说了 &

因此 exec some_cmd &some_cmd & 相同。

如果您需要使用 exec 标志之一,您可以将 exec& 一起使用。键入 help exec 以查看 exec 支持的标志。

关于bash - “exec some_cmd &” 在 bash 中意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34468986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com