GNOME开发人员在大约3.8版本中从 gnome-terminal 中删除了选项disable-factory
。在 wheezy 中有旧版本,在 jessie 中有3.14。
当使用该选项时 gnome-terminal (< 3.8)等待,直到运行它的东西结束。在较新版本中, gnome-terminal 会在窗口启动后立即返回。更糟糕的是,在窗口中运行的进程将主要的gnome-terminal进程作为父进程,因此我不能waitpid
为它(因为这仅保留给子进程)。
我有一个Ruby脚本,它在gnome-terminal中启动一个工具,必须等到该工具的进程结束。任何人都知道如何实现这一目标,而不会在给定PID的循环检查状态上消耗太多资源?
必须可以在Ruby或Bash中完成。
答案 0 :(得分:0)
看看sys-proctable
宝石,它可能就是你所需要的。
(524)⚡️ irb
2.1.2 :001 > require 'sys/proctable'
=> true
2.1.2 :002 > s = Sys::ProcTable.ps(88964)
=> #<struct Struct::ProcTableStruct pid=88964, ppid=88962, pgid=88964 ...>
2.1.2 :003 > s.comm
=> "bash"
2.1.2 :004 > s.state
=> "run"
之后它应该像循环一样简单:
loop do
s = Sys::ProcTable.ps(88964)
break if s.nil? || s.state != 'run'
sleep(1)
end