#multithreading #bash
#многопоточность #bash
Вопрос:
Мне нужны дочерний и родительский pid. Итак, я делаю это:
function x { echo $1 $$; }
Теперь, когда я делаю следующее, я ожидаю, что функция x будет иметь родительский и дочерний pid:
x $$ amp;
Однако x имеет только родительский pid. Как я могу заставить функцию запускаться как отдельный процесс?
Ответ №1:
Я полагаю, вы ищете $BASHPID
:
#! /bin/bash
function x { echo $$ $BASHPID;}
x amp; child=$!; wait ; echo $child
Вывод:
bash test.sh
1191 1195
1195
Ответ №2:
Похоже, что-то связанное с областью действия $$
, оно уже было оценено глобально при запуске скрипта. Функция определенно выполняется в отдельном процессе. Вы можете получить PID дочернего процесса с помощью $!
function x {
echo $1 $$;
}
x $$ amp;
echo "forked process: $!"