Передайте процесс свой собственный идентификатор процесса в командной строкеLinux

Ответить
Anonymous
 Передайте процесс свой собственный идентификатор процесса в командной строке

Сообщение Anonymous »

В сценарии оболочки или интерактивного использования я иногда хочу получить идентификатор процесса команды, которую я запускаю, и передать этот идентификатор процесса в команду в собственной командной строке. Представьте себе: < /p>

Код: Выделить всё

% /bin/echo I am process $WHATEVER
I am process 123
Это распечатало бы PID процесса Echo , а не PID процесса Bash , который его раздвоил.
Есть несколько неправильных ответов. Одним из них является переменная $$ для получения текущего идентификатора процесса.

Код: Выделить всё

% /bin/echo $$
1234
% /bin/echo $$
1234
Номер не меняется, хотя новый процесс Echo работает каждый раз. Это потому, что это пид самой оболочки. (И обратите внимание, что я призвал/bin/echo , чтобы убедиться, что он работает как отдельный процесс, а не оболочку, встроенный в Echo .)
А как насчет явно создания подсшейшки? Тогда я мог бы, по крайней мере, получить PID от Bash подпроцесса, хотя, возможно, не в самого процесса Echo .

Код: Выделить всё

% (/bin/echo $$)
1234
< /code>
Нет, он все еще дает тот же номер!  Как отмечалось в другом месте на этом сайте, $$ 
получает специальную обработку в подборных, все еще давая родительский идентификатор процесса. Но есть расширение Bash $ bashpid .

Код: Выделить всё

% (/bin/echo $BASHPID)
9784
< /code>
Это пид подбола, но как насчет пида самой команды Echo?  И есть ли менее неуклюжий способ сделать это без ()  

Подробнее здесь: [url]https://stackoverflow.com/questions/79668804/pass-a-process-its-own-process-id-on-the-command-line[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»