如何知道作为子进程运行的 bash 函数的进程 pid?

如何知道作为子进程运行的 bash 函数的进程 pid?

我试图了解在脚本中作为子进程运行的函数的 pid

函数调用

#!/bin/bash
echo "pid=$$;ppid=$PPID"
ps -p $$
function FUNCtstPsSelf() { 
    sleep 3;
    echo "$FUNCNAME:pid=$$;ppid=$PPID";
    ps -p $$ -o pid,ppid,command; 
}
FUNCtstPsSelf&
sleep 1;

但是它找不到 pid!现在该怎么办?

答案1

尝试使用$BASHPID而不是$$。手册页中出现的两次 之一$$是为了解释它何时与 不同$BASHPID,包括“不需要重新初始化 bash 的子 shell”,这可能包括您的后台函数进程?

相关内容