Возвращаясь к давней теме... (не хочется из-за этого отдельную тему марать)
Вот такая интересная штука в /proc -
самоидентификация параметров процесса: каталог /proc/self/
Но в чём фишка? В том, что /proc/self - это ссылка:
Код: Выделить всё
bash-4.2$ ps | tail -n5
PID TTY TIME CMD
14575 pts/2 00:00:00 bash
14577 pts/2 00:00:00 ps
14578 pts/2 00:00:00 bash
Код: Выделить всё
bash-4.2$ ls -l /proc/sel*
lrwxrwxrwx 1 root root 64 авг. 12 08:00 /proc/self -> 14587
Т.е. ссылка на имя вида /proc/14587 - на PID самого процесса, который и открывает этот каталог /proc/self.
Если я запущу ещё одно окно терминала со своим shell, то его /proc/self будет предоставлять совсем другую информацию об этом новом процессе:
Код: Выделить всё
bash-4.2$ ps
PID TTY TIME CMD
15129 pts/4 00:00:00 bash
15132 pts/4 00:00:00 ps
bash-4.2$ exec ls -l /proc/sel*
lrwxrwxrwx 1 root root 64 авг. 12 08:00 /proc/self -> 15129
И наоборот, простой ми привычный запуск вот так:
Код: Выделить всё
bash-4.2$ ls -l /proc/sel*
lrwxrwxrwx 1 root root 64 авг. 12 08:00 /proc/self -> 15133
bash-4.2$
- будет давать информацию самоиндефикации фиктивного (умершего к моменту вывода) дочернего процесса shell, запущенного только на время выполнения команды ls.
Как сделать
такое в модуле ядра - в общих чертах понятно.
Но сделано любопытно!