rua*_*hao 143 linux bash shell pid
我有Bash的问题,我不知道为什么.
在shell下,我输入:
echo $$ ## print 2433
(echo $$) ## also print 2433
(./getpid) ## print 2602
Run Code Online (Sandbox Code Playgroud)
"getpid"是一个获取当前pid的C程序,如:
Run Code Online (Sandbox Code Playgroud)int main() { printf("%d", (int)getpid()); return 0; }
令我困惑的是:
你能帮助我吗?
che*_*ner 204
$$
被定义为在子shell中返回父进程的进程ID; 从"特殊参数"下的手册页:
$扩展为shell的进程ID.在()子shell中,它扩展为当前shell的进程ID,而不是子shell.
在bash
4中,您可以获取子项的进程ID BASHPID
.
~ $ echo $$
17601
~ $ ( echo $$; echo $BASHPID )
17601
17634
Run Code Online (Sandbox Code Playgroud)
cra*_*ken 78
您可以使用以下之一.
$!
是最后一个后台进程的PID.kill -0 $PID
检查它是否仍在运行.$$
是当前shell的PID.Nie*_*jes 25
$$
是Bash中当前脚本PID的别名.见之间的差异$$
,并$BASHPID
在这里,和正上方的额外变量$BASH_SUBSHELL
包含嵌套级别. 归档时间: |
|
查看次数: |
265425 次 |
最近记录: |