私は Xorg を実行しており、私の (Qt) プログラムはそれ自体をデーモン化します。ここで、ログアウトして X サーバーを再起動します。再度ログインすると、プロセスはまだ正常に実行されていますが、表示されません。
X サーバーの新しい化身を古いプロセスにアタッチする方法はありますか? サーバー全体を再起動せずにログアウトして再度ログインした場合、古いプロセスを確認する方法はありますか?
ありがとう
xpra はあなたの要件を達成するはずです。また、tcp 接続を開始することもできます (ssh は必要ありません)。サーバーで起動します。
xpra start :100 --start-child=xterm --bind-tcp=0.0.0.0:10000
クライアントに接続します。
xpra attach tcp:SERVERHOST:10000
Mac または Windows xpra アプリを使用して接続することもできます。win7とosx10.10.2で試してみました。ダウンロードリンク:
Windows: https://www.xpra.org/dists/windows/Xpra_Setup.exe Mac: https://www.xpra.org/dists/osx/x86/Xpra.dmg
Xpraのようなものを使用してください:それはあなたが必要なときにいつでも再接続できるオフスクリーンX11サーバー上で、そしてリモートマシンからもアプリケーションを実行することを可能にします。「シームレス」セッションもサポートしているため、ウィンドウはローカルウィンドウと同じように表示されます。
実例:
xpra start :10 --start-child=/bin/YOURAPP
次に、再接続するときはいつでも(たとえば、X11サーバーの再起動後):
xpra attach :10
またはリモートマシンから:
xpra attach ssh://THESERVERHOSTNAMEORIP/10
X サーバーへの接続が失われると、接続を回復することはできません。
xmove と呼ばれる xserver プロキシがありましたが、これは非常に非推奨であり、最新のツールキットで使用されている可能性が高いいくつかの新しい X 拡張機能では動作しません。
xvnc や (より良い) NX などの別の仮想 X サーバーでプロセスを実行してみることができます。NX は、NoMachine によって開発された X プロキシ テクノロジです。NX サーバーの無料の実装も存在します。このようなサーバー内でプログラムを実行すると、任意のグラフィカル環境からプログラムをアタッチおよびデタッチできます。
これらの人は可能だと言っていますが、私はその機能をテストしていません...