我有一个在前台运行的子进程,他的父亲已经退出。
proc/$pid/stat
文件不再包含父pid,如果已经退出父pid并且它显示1而不是原始父pid
linux$cat /proc/6267/stat
6267 (test3.sh) S 1 6265 ......
# ^
# |
# I expected to get the origin parent pid but I get 1
要快速重现此行为,我们可以使用以下脚本
test2.sh
#!/bin/sh
echo "test2=$$"
./test3.sh &
test3.sh
#!/bin/sh
echo "test3=$$"
sleep 1000
执行:
linux$ ./test2.sh
test2=6318
test3=6319
linux$ ps aux | grep test
6319 root 1484 S {test3.sh} /bin/sh ./test3.sh
linux$ cat /proc/6319/stat
6319 (test3.sh) S 1 6318 2138 34816 6.......
答案 0 :(得分:1)
我认为在(父)执行完毕后你不能知道进程的父进程。但也许你可以运行另一个程序来监视你的原始程序并维护一个日志文件或其他东西。当然,init采用了孤立的进程。