1

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

这是我所拥有的:

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

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

4

1 回答 1

1

您可以使用pgrep获取 Jack 的 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中查找进程。

于 2008-09-14T05:19:11.613 回答