我按python
system(run_command)
脚本
但是我想得到正在运行的python脚本的pid,
所以我尝试使用fork
并获取pid,
但是返回的pid是fork的块的pid,而不是python进程。
我怎么能得到python进程的pid,谢谢。
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
(更新)
我尝试使用spawn方法。
重新调整的pid仍然不是正在运行的python进程的pid。
我得到了pid 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)
答案 0 :(得分:2)
在子shell中执行命令... 。命令...是以下形式之一。
你将获得子shell的pid,而不是命令。
如何使用Process#Spwan
?它返回子进程的pid。
run_command = '...'
pid = Process.spawn(cmd)
Process.wait(pid)