я пытался получить PID процесса я столкнулся с setsid
и которые должны работать в фоновом режиме, как это:
test.sh:
#/bin/bash
setsid nohup ./my_program &
echo $!
если я бегу ./test.sh
он напечатает идентификатор процесса my_program
процесса и его именно то, что мне нужно. Но если запустить эти команды один за другим в моей оболочке, как это:
$ setsid nohup ./my_program &
$ echo $!
Это даст мне PID из setsid
команды (или может быть что-то еще, но почти все время дает мне PID из my_program
минус один) ,
Что здесь происходит? Почему результаты команд, которые я запускал в терминале самостоятельно, отличаются от результатов сценария test.sh
?
Btw, может быть, вы знаете какой-то простой способ обработки, который я начал с setid и который мне нужно запустить в фоновом режиме?
Возможно, это связано с поведением типа setsid? Это только вилки, если это лидер группы процессов; см. [здесь] (http://stackoverflow.com/a/9685973/1735215). – 0range
Чтобы получить pid процесса, выполняемого через setid, вы можете попробовать [this] (http://stackoverflow.com/a/19767312/1735215) – 0range
@ 0range да, я думаю, что первая ссылка именно то, что мне нужно. Большое спасибо! Не могли бы вы написать это как ответ, чтобы я мог принять его? – PepeHands