0

GNOME 开发人员在 3.8 版左右disable-factorygnome-terminal中删除了选项。虽然在wheezy中有旧版本,但在jessie中有 3.14。

当使用该选项时,gnome-terminal (<3.8) 一直等到运行它的东西结束。在较新的版本中,gnome-terminal在窗口启动后立即返回。更糟糕的是,在窗口中运行的进程将主 gnome-terminal 进程作为父进程,所以我不能waitpid为它(因为它只为子进程保留)。

我有一个 Ruby 脚本,它在 gnome-terminal 中启动一个工具,并且必须等到该工具的进程结束。任何人都知道如何在给定PID的进程的循环检查状态上消耗太多资源而不消耗太多资源?

必须可以在 Ruby 或 Bash 中完成。

4

1 回答 1

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
于 2014-11-03T15:33:41.840 回答