为什么'echo $$'的价值与流程的pid不同?

时间:2014-10-19 03:34:59

标签: shell

这是我的代码。

#include <unistd.h>

int main(){
    system("echo $$");
    return 0;
}


$ ./a.out &
[1] 29227
$ 29228

$ ./a.out &
[1] 29107
$ 29108

,结果在上面。

为什么彼此不同?

1 个答案:

答案 0 :(得分:1)

当你执行system()操作系统旋转(参见man fork,也是man execl)一个新进程时,原始进程的副本。然后,此过程将加载您想要的新程序(在本例中为shell),以打印其pid。因此他们不同。