2008-09-13 65 views
1

不幸的是,我的问题不像跟踪由同一个进程创建的两个窗口一样简单。如何跟踪X11中的相关窗口?

以下是我有:

  • 两个用户,杰克和吉姆远程登录到相同的Unix系统和运行X服务器
  • 杰克运行的应用程序,“AwesomeApp”,即打开GUI的X窗口
  • 吉姆运行此应用程序的另一个实例,打开自己的GUI窗口
  • 现在,杰克运行监管器应用,因为它是会随着进程拥有的第一个窗口(如“AwesomeApp”)传达他'AwesomeApp'的实例
  • 他的主管实例如何查找哪个“AwesomeApp”窗口实例是他自己的?

Aaaahhhh ...寻找它在每个用户的基础上是可以工作。 只要我告诉用户他们无法用两个不同地方的同一用户帐户登录。

回答

1

您可以使用pgrep获得AwesomeApp杰克的实例的进程ID:

pgrep -u Jack AwesomeApp 


所以,如果你从一个shell脚本启动监管器应用,你可以不喜欢以下内容:

AWESOME_ID=`pgrep -u $USER AwesomeApp 2>/dev/null` 

# run the supervisor application and pass the process id as the argument 
supervisor $AWESOME_ID 


另外,如果你不想使用外部程序,如pgrep或ps,你总是可以试着看直接在/proc的过程中。