当前位置:  开发笔记 > 编程语言 > 正文

我的linux bash $$与/ proc/self链接不匹配?

如何解决《我的linuxbash$$与/proc/self链接不匹配?》经验,为你挑选了1个好方法。

我在RHEL 5上尝试/ proc这样:

$echo $$
50040

$ls -ld /proc/self
lrwxrwxrwx 1 root root 64 Jan 22 15:25 /proc/self -> 22485

我期望/ proc/self链接到/ proc的子目录,这是我当前的进程ID.但$$显示进程ID是50040,而不是22485.为什么?



1> Fred..:

发出ls命令时看到的PID是命令的PID ls,而不是shell 的PID .如果你连续多次这样做,你会发现它每次都不同:

fred> ls -ld /proc/self
lrwxrwxrwx 1 root root 0 Jan 12 13:13 /proc/self -> 5075

fred> ls -ld /proc/self
lrwxrwxrwx 1 root root 0 Jan 12 13:13 /proc/self -> 5076

fred> ls -ld /proc/self
lrwxrwxrwx 1 root root 0 Jan 12 13:13 /proc/self -> 5077

如果要获取shell的PID,则需要确保/proc/self在shell运行时使用,而不是其中一个子进程:

cd /proc/self ; pid=$(awk '{print $1}' stat) ; cd -

(这cd是一个bash内部命令,因此,在您访问的位置/proc/self,您仍然在shell进程中运行).

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有