我对 Bash 有疑问,我不知道为什么。 在 shell 下,我输入:
echo $$ ## print 2433 (echo $$) ## also print 2433 (./getpid) ## print 2602
getpid获取当前 pid 的 C 程序在哪里,例如:
getpid
int main() { printf("%d", (int)getpid()); return 0; }
让我困惑的是:
$$
你能帮助我吗?
$$定义为在子shell中返回父进程ID;从“特殊参数”下的手册页中:
$ 扩展为 shell 的进程 ID。在 () 子shell 中,它扩展为当前shell 的进程ID,而不是子shell。
bash4、可以通过 获取子进程ID BASHPID。
bash
BASHPID
~ $ echo $$ 17601 ~ $ ( echo $$; echo $BASHPID ) 17601 17634