Я выбежала внешний python
скрипт system(run_command)
Как получить идентификатор процесса внешнего процесса
Но я хочу, чтобы получить идентификатор процесса сценария работает питона,
Так что я пытался использовать fork
и получить идентификатор процесса ,
Но возвращенный pid был pid блока fork, а не процессом python.
Как я могу получить pid процесса python, спасибо.
arguments=[
"-f #{File.join(@public_path, @streaming_verification.excel.to_s)}",
"-duration 30",
"-output TEST_#{@streaming_verification.id}"
]
cmd = [ "python",
@automation[:bin],
arguments.join(' ')
]
run_command = cmd.join(' ').strip()
task_pid = fork do
system(run_command)
end
(Update)
Я пытался использовать метод икру.
Повторно настроенный pid по-прежнему не является pid запущенного процесса python.
Я получил ИДП 5177, но на самом деле Pid, я хотел, это 5179
run.sh
./main.py -f ../tests/test_setting.xls -o testing_`date +%s` -duration 5
sample.rb
cmd = './run.sh'
pid = Process.spawn(cmd)
print pid
Process.wait(pid)
Хорошо, я попробовал ваше решение, но это не сработало для меня. Я обновил сообщение с вашим решением. я неправильно понял ваше объяснение? – newBike
@poc, Ах .. Вы запускаете команду через оболочку. 'pid' будет pid оболочки, а не команды. Вы должны вызвать программу напрямую, чтобы получить pid процесса. – falsetru