У меня есть сценарий, который я хотел бы разветвить в один момент, чтобы были запущены две копии одного и того же сценария.
Например, я хотел бы, чтобы существовал следующий скрипт bash:
echo $$
do_fork()
echo $$
Если этот bash-скрипт действительно существует, ожидаемый результат будет:
<ProcessA PID>
<ProcessB PID>
<ProcessA PID>
или
<ProcessA PID>
<ProcessA PID>
<ProcessB PID>
Есть ли что-то, что я могу поставить вместо do_fork (), чтобы получить такой вывод, или заставить скрипт bash выполнить C-подобный форк?
&
это вилка, нет никакого exec, вовлеченного. Fork + exec - это когда вы запускаете внешнюю команду.exec
, но два языка имеют разные потоки управления.&
запускает подоболочку, в которой выполняется данная команда. Вилка + отл. Вы не можете просто поставить&
без предшествующей команды для выполнения.&
строку самостоятельно. Но ты не можешь. Это не означает «развилка здесь». Это означает «выполнить предыдущую команду в фоновом режиме в подоболочке».