如何跟踪X11中的相关窗口?

时间:2020-03-05 18:52:52  来源:igfitidea点击:

不幸的是,我的问题并不像跟踪由同一过程创建的两个窗口那样简单。

这是我所拥有的:

  • Hyman和Jim这两个用户远程登录到同一Unix系统并运行X服务器
  • Hyman运行一个应用程序" AwesomeApp",该应用程序在X窗口中打开一个GUI。
  • Jim运行该应用程序的另一个实例,打开自己的GUI窗口
  • 现在,Hyman运行一个主管应用程序,它将与拥有第一个窗口的流程进行通信(例如" AwesomeApp"),因为它是" AwesomeApp"的HIS实例
  • 他的主管实例如何找到他自己的" AwesomeApp"窗口实例?

Aaaahhhh ...在每个用户的基础上查找它是可行的。
只要我告诉用户他们不能使用相同的用户帐户从两个不同的位置登录。

解决方案

回答

我们可以使用pgrep来获取Hyman的AwesomeApp实例的进程ID:

pgrep -u Hyman AwesomeApp

因此,如果我们从外壳程序脚本启动超级用户应用程序,则可以执行以下操作:

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中查找进程。