यदि मैं एक प्रक्रिया शुरू करता हूं और फिर इसका बाइनरी हटा देता हूं, तो भी मैं इससे उबर सकता हूं /proc/<pid>/exe
:
$ cp `which sleep` .
$ ./sleep 10m &
[1] 13728
$ rm sleep
$ readlink /proc/13728/exe
/tmp/sleep (deleted)
$ cp /proc/13728/exe ./sleep-copy
$ diff sleep-copy `which sleep` && echo not different
not different
$ stat /proc/13728/exe
File: ‘/proc/13728/exe’ -> ‘/tmp/sleep (deleted)’
Size: 0 Blocks: 0 IO Block: 1024 symbolic link
दूसरी ओर, यदि मैं खुद एक प्रतीकात्मक लिंक बनाता हूं, तो लक्ष्य को हटा दें और कॉपी करने का प्रयास करें:
cp: cannot stat ‘sleep’: No such file or directory
/proc
कर्नेल के लिए एक इंटरफ़ेस है। तो क्या यह प्रतीकात्मक लिंक वास्तव में मेमोरी में भरी हुई कॉपी की ओर इशारा करता है, लेकिन अधिक उपयोगी नाम के साथ? exe
लिंक कैसे काम करता है , बिल्कुल?
proc_exe_link()
में रहता हैproc
: lxr.free-electrons.com/source/fs/proc/base.c?v=4.0#L1350