1

残念ながら、私の質問は、同じプロセスで作成された 2 つのウィンドウを追跡するほど単純ではありません。

ここに私が持っているものがあります:

  • Jack と Jim の 2 人のユーザーが同じ Unix システムにリモートでログインし、X サーバーを実行しています。
  • ジャックは、X ウィンドウで GUI を開くアプリケーション「AwesomeApp」を実行します。
  • Jim はこのアプリケーションの別のインスタンスを実行し、自分の GUI ウィンドウを開きます
  • ここで、Jack は、最初のウィンドウ (たとえば、「AwesomeApp」) を所有するプロセスと通信するスーパーバイザー アプリケーションを実行します。これは、「AwesomeApp」の HIS インスタンスであるためです。
  • スーパーバイザーの彼のインスタンスは、「AwesomeApp」ウィンドウのどのインスタンスが自分のものであるかをどのように見つけることができますか?

ああああ...ユーザーごとに調べてみると、はい、うまくいくかもしれません。2 つの異なる場所から同じユーザー アカウントでログインできないことをユーザーに伝える限り。

4

1 に答える 1

1

pgrepを使用して、Jack の AwesomeApp インスタンスのプロセス ID を取得できます。

pgrep -u Jack 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でプロセスを直接検索することもできます。

于 2008-09-14T05:19:11.613 に答える