実行可能ファイルのコピーを別のプロセスとして開くにはどうすればよいですか?

実行可能ファイルのコピーを別のプロセスとして開くにはどうすればよいですか?

実行時に他のプロセスを使用するためにいくつかの実行可能ファイルのコピーの名前を変更したいと思います。

システム:Lubuntu 18.04デスクトップ64ビット。

たとえば、

$ sudo cp -a /usr/bin/mate-terminal  /usr/bin/mate-terminal-left
$ sudo cp -a /usr/bin/mate-terminal  /usr/bin/mate-terminal-right

ランチャーで実行すると、mate-terminal-left画面の左側にターミナルウィンドウが開きます(OpenBoxウィンドウマネージャの構成設定のため)。

ちなみに、その端末で次のコマンドを実行します。

$ ps -eo pid,command | grep -i 'terminal' | grep -ve 'grep'
19294 /usr/bin/mate-terminal-left

これで、左側の端末が開いている状態で別のランチャーで実行すると、mate-terminal-right画面の右半分に端末ウィンドウが開きます。ただし、mate-terminal-right新しいプロセスは作成されず、すでにアクティブなmate-terminal-leftプロセスを使用しているため、左側にも開きます。

$ ps -eo pid,command | grep -i 'terminal' | grep -ve 'grep'
19294 /usr/bin/mate-terminal-left

初めて開くとmate-terminal-right右側が開き、mate-terminal-left右側でも終了します。

mate-terminal一部の実行可能ファイル(Geanyなど)は左右の名前を変更する方法に適していますが、他の実行可能ファイル(および)は、異なる名前pcmanfmで始まってもすべてのインスタンスに対して同じプロセスを使用することがわかりました。

私の質問は:それぞれを別々のプロセスとして有効にしてmate-terminal-left開く方法は何ですか?mate-terminal-right

左右の端末を作成する方法を提案する下記のコメントにご提案いただきありがとうございます。しかし、それは私の質問ではありません。私は誰かが同じプロセスの複数のインスタンスを実行するのではなく、複数のプロセスで同じ実行ファイルを実行したい理由を具体的に説明するためにこの例を使用しています。私はmate-terminalこれを例として使用しているので、他の端末を探していません。

この質問のタイトルは、私が尋ねるものとまったく同じです。 「実行ファイルのコピーを別のプロセスとして開くにはどうすればよいですか?」

答え1

ここで見ているものは非常に具体的ですが、mate-terminal他のアプリケーションでも見つけることができるいくつかの共有GNOME / GTK +インフラストラクチャを使用する方が一般的です(これpcmanfmも言及しました)。

新しいコピーを開始するとmate-terminal(おそらく別のバイナリから)するこれに対して新しいプロセスを作成します。しかし、mate-terminalD-Busに接続して「工場」を見つけようとプログラムされています。この場合、ターミナルで起動されたもののパラメータを渡し、「工場」にそれを管理させ、新しいプロセスを終了します。 (工場がないと工場に登録されるため、最初に開始されたプロセスがすべての端末を管理することになります。)

「工場」はD-Bus経路を通して発見されます/org/mate/Terminal/Factoryハードコーディングバイナリファイルを入力してください。 (したがって、バイナリの他のコピーにコピーされます。)

場合によっては、コマンドライン引数をmate-terminal渡してこの動作を無効にできます。--disable-factory(望むよりマニュアルページ詳細については。 )

これはmate-terminal動作方法が非常にユニークです。特にpcmanfm実際には同じようには行われません。pcmanfm別のプロセスを開始する方法がサポートされているのか、それともD-Busを介して既存のインスタンスと通信することが機能する唯一の方法なのかはわかりません。 (pcmanfmこのような場合があるかどうか調べてください。)

答え2

回避策:別々のプロセスを作成するツールを使用してください。

私のメインコンピュータのデスクトップに3つのターミナルウィンドウを生成するシェルスクリプトがあります。私のスクリプトのいくつかのアイデアに基づいて、あなたに役立つことができる(または必要なものを作成するのに役立ちます)、次のことを試しました。

#!/bin/bash

vdockw=0 #68
hdockw=60

resol=$(xrandr|grep current|cut -d, -f2)
resol=$(<<< "$resol" sed 's/.*current //')
echo $resol
xres=${resol%% *}
yres=${resol##* }
echo $xres $yres
xmid=$(( (xres-vdockw)/2 ))
ymid=$((yres-hdockw))
echo $xmid $ymid

#xterm -title "term v" & pid=$!
sakura --title="term v" & pid=$!
sleep 0.5
wid=$(wmctrl -lp | grep "$pid" | cut "-d " -f1)
sleep 1
echo $pid $wid
wmctrl -i -r $wid -e 1,0,0,$xmid,$ymid

#xterm -title "term h" & pid=$!
sakura --title="term h" & pid=$!
sleep 0.5
wid=$(wmctrl -lp | grep "$pid" | cut "-d " -f1)
sleep 1
echo $pid $wid
wmctrl -i -r $wid -e 1,$((xmid+vdockw)),0,$xmid,$ymid

vdockw=68インストールされた2つの18.04 LTSシステム、Lubuntu(現状のまま)と標準のUbuntu()で動作するかどうかをテストしました。

shellscriptはリポジトリで利用可能で、次のようにインストールできるパッケージsakura wmctrlとMaybeを使用します。xtermuniverse

sudo apt update
sudo apt install sakura wmctrl xterm

関連情報