Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / как портабельно в шеле получить текущий pid? / 12 сообщений из 12, страница 1 из 1
02.05.2012, 13:14
    #37778948
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как портабельно в шеле получить текущий pid?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#!/bin/bash

echo $$

(
        read pid rest < /proc/self/stat
        echo "/proc info: $pid"
        echo "\$\$: $$"
        pstree -ap $$
)



read pid rest < /proc/self/stat - только для линуксов, а $BASHPID только для баша
...
Рейтинг: 0 / 0
02.05.2012, 14:34
    #37779082
landy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как портабельно в шеле получить текущий pid?
$$
не?
...
Рейтинг: 0 / 0
02.05.2012, 14:35
    #37779084
landy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как портабельно в шеле получить текущий pid?
Или не bash нужен ?
...
Рейтинг: 0 / 0
02.05.2012, 16:03
    #37779243
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как портабельно в шеле получить текущий pid?
On 05/02/2012 02:14 PM, Андрей Панфилов wrote:

Special Parameters
The shell treats several parameters specially. These parameters may
only be referenced; assignment to them is not allowed.

....

$ Expands to the process ID of the shell. In a () subshell, it
expands to the process ID of the current shell, not the subshell.

(Не знаю, как по POSIX-у).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.05.2012, 16:46
    #37779326
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как портабельно в шеле получить текущий pid?
MasterZiv,

да я уже разобрался, но криво блин как-то:

pid=$(exec sh -c 'echo $PPID')
...
Рейтинг: 0 / 0
02.05.2012, 16:49
    #37779333
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как портабельно в шеле получить текущий pid?
On 05/02/2012 05:46 PM, Андрей Панфилов wrote:

> да я уже разобрался, но криво блин как-то:
>
> pid=$(exec sh -c 'echo $PPID')

Так а $$ не подходит ?


Это:
pid=$(exec sh -c 'echo $PPID')

тебе даст PID только что запушенного процесса, дочернего к данному,
который выполнит комманду 'echo $PPID' и тут же убъётся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.05.2012, 16:54
    #37779340
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как портабельно в шеле получить текущий pid?
On 05/02/2012 05:49 PM, MasterZiv wrote:

> Так а $$ не подходит ?

По крайней мере тут он есть :
http://heirloom.sourceforge.net/man/sh.1.html

и здесь тоже:
http://pubs.opengroup.org/onlinepubs/9699919799/
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.05.2012, 17:02
    #37779355
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как портабельно в шеле получить текущий pid?
MasterZivТак а $$ не подходит ?ну по моему примеру вроде видно что не подходит
MasterZivтебе даст PID только что запушенного процесса, дочернего к данномунет, выдаст родительский, что собственно и нужно
...
Рейтинг: 0 / 0
05.05.2012, 12:59
    #37783504
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как портабельно в шеле получить текущий pid?
Андрей ПанфиловMasterZivТак а $$ не подходит ?ну по моему примеру вроде видно что не подходит

не видно

вот же все работает :
Код: sql
1.
2.
3.
4.
5.
#!/bin/bash

echo '$$=' $$
read pid rest < /proc/self/stat
echo "/proc info: $pid"


Код: sql
1.
2.
3.
 ./t2.sh
$$= 22901
/proc info: 22901
...
Рейтинг: 0 / 0
05.05.2012, 15:16
    #37783742
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как портабельно в шеле получить текущий pid?
netwind,

внимание на круглые скобки
...
Рейтинг: 0 / 0
05.05.2012, 15:27
    #37783767
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как портабельно в шеле получить текущий pid?
Андрей Панфилов, я код не читаю никогда, если рядом написано по-русски.

хотели pid текущего процесса - это $$.
хотели суперпортабельности - это perl и тоже $$.
...
Рейтинг: 0 / 0
05.05.2012, 15:31
    #37783780
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как портабельно в шеле получить текущий pid?
нет, я реально не понимаю зачем запускать еще один процесс только чтобы взять оттуда pid родителя в переменной $PPID ?
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / как портабельно в шеле получить текущий pid? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]