アプリケーションを騙して異なるプロセスを実行させるにはどうすればよいでしょうか?

アプリケーションを騙して異なるプロセスを実行させるにはどうすればよいでしょうか?

私はPDFファイルを開くためにPDFXCview.exe(pdfxchangeビューアポータブルバージョン用)をWineで実行しています。

PDFXCview.exe 1.pdf

別のファイルに対して同じ操作を行うと、そのファイルは PDFXCview.exe の同じプロセスによって開かれます。別のプロセスで開くことはできますか? 理由は、同じプロセスで 2 つの PDF ファイルが開かれると、アプリケーションが遅くなったり、応答しなくなったりするためです。

別のプロセスが実行されているか、実行可能ファイル PDFXCview.exe によって決定されていないか。exe ファイルがサーバーとして実行されているためですか?

他のネイティブ Linux アプリケーションでもソリューションは同じですか?

ありがとう。

答え1

本来、同じ実行コードで複数のプロセスを実行できるこれが自然に行われないのであれば、プログラム自体がそれを行っています。ただし、Windows (または少なくとも Windows によく似た) システムでこれがどのように行われるかはわかりません。Linux では、主に.pidファイルを使用します。

exe ファイルがサーバーとして実行されるためでしょうか?

まあ、これもあり得ます。実際、Emacs にはこれを可能にするオプションがあります。しかし、PDF ビューアにとって意味がわかりません... Linux システムでは、これに対する広く使用されている 2 つのソリューションが考えられます。

  • 2 つのインスタンスが通信できるようにする UNIX ソケット。
  • シグナル: 2 番目のインスタンスが生成されると、最初のインスタンスにシグナルが送信されるだけです (次のように言います:起きろ!)して終了します。

まず最初に確認したいのは、これが設定可能かどうかです。たとえば、VLC では、これを設定することができます (これは非常に素晴らしいことです)。

VLCオプション

何らかの理由で(本当は知りたくないのですが)、Wineを実行できなくなりました。しかし、仮想マシンでは、編集 > 環境設定メニュー:

単一文書

複数のインスタンス

切り替える単一文書そして許可する複数のインスタンスこの小さなツールが、あなたが探している PDF ビューアーに変身するはずです。

Linux システムでは、.pidアプリケーションによって作成されたファイルを操作してみることもできます。これは厄介な結果になる可能性がありますが、アプリケーションの起動後にファイルを削除すれば、新しいインスタンスがファイル以外のインスタンスを検索しない限り、新しいインスタンスを騙すことができるはずです.pid

もう 1 つの解決策は、2 番目のプログラムを別のユーザーとして実行することです。2 人のユーザーは同じプロセスを共有できないため、プログラムは 2 回起動する必要があります。この方法で、Linux で Skype を 2 回起動することに成功した人もいます (それほど手間はかかりませんが)。

アプリケーションがシングル インスタンス モードで実行されるのは、おそらくそれなりの理由があるということを覚えておいてください。また、ほとんどの場合、これは実際に必要な設計というよりも、ユーザーの選択によるものです。

長所

  • 実行中のプロセスは1つだけなので、全員に1つのメモリアドレス空間が与えられ、そのため、2つのプロセス、2つのインスタンス

  • 一部のグラフィカル プログラムは頻繁に実行されます。VLC を例に挙げると、Music ディレクトリで MP3 ファイルを開くたびに、新しいウィンドウが作成されます。つまり、3 分または 4 分ごとに音楽が終了すると、古いウィンドウを閉じて新しいファイルを開かなければなりません。これはまったく便利ではありません。ただし、現在の VLC インスタンスを閉じたり再度開いたりせずにキューに次の曲を登録するのは便利です。

  • もう 1 つの利点は、凝ったビデオ ゲームのような非常に重いアプリケーションの場合です。このアプリケーションは起動に多くの時間とリソースを要し、誤ってアプリケーションを起動してしまうことがいかに簡単であるかは誰もが知っています。アプリケーションをシングル インスタンス モードで実行するように設定すると、再起動すると通常は最初のインスタンスがフォアグラウンドに戻ります。多くのゲーム開発者もこれを使用して、ユーザーが複数のアカウントで同時にログインするのを防止しています。

短所

  • まあ、おわかりのとおり、設計が悪くなる傾向があります。実際、通信が非常に簡単になるので (プロセス間通信 (IPC) が不要)、怠惰な開発者の中には、アプリケーションを常に単一インスタンス状態に強制しようとする人もいるかもしれません。ほとんどのアプリケーションでは、これは実際には問題ではありませんが、PDF ビューアの場合はばかげています。

  • 欠点ではありませんが、悪いシナリオは、これをオプションとして提供しないことです。アプリケーションが本当に単一インスタンス モードで実行する必要がある場合は、常にこれをユーザーの選択にする必要があります (または、問題がない場合はマルチインスタンスを使用します)。

しかし、結局のところ、ここでの主な懸念はユーザー体験シングルインスタンスモードがオプションとなることが多いのは、あなたプログラムを使用する。月に1、2本のビデオファイルを視聴するだけなら、VLCが複数のインスタンスで実行されていても気にしないだろう。100%音楽を聴くなら、これは気になるだろう。VLCプロセス、1-1 です非アクティブなもの。

答え2

一般的には、いいえ。プログラムが を呼び出さない場合はexecve、シンボルをプリロードするコードを書かない限り、何かを傍受する機会はありませんが、WINE でもそれが機能するかどうかはわかりません。

関連情報