Как вызвать копии исполняемых файлов, чтобы открыть как отдельные процессы?

Хорошо, нашел.

Вам нужно добавить сеть только для хоста в виртуальный ящик.

Затем настройте виртуальную машину для использования сети только для хоста.

И, наконец, возьмите адрес в этой виртуальной сети с помощью команды ip:

sudo ip addr add 192.168.56.1/24 dev vboxnet
2
27.11.2018, 20:33
2 ответа

То, что вы видите здесь, довольно специфично для самого mate-terminal, хотя в более общем плане используется некоторая общая инфраструктура GNOME/GTK+, которую вы также можете найти в других приложениях (, которые вы упомянули pcmanfm.)

Когда вы запускаете новую копию mate-terminal, возможно, из другого двоичного файла, она действительно создает для нее новый процесс. Но mate-terminalзапрограммирован на подключение к шине D -и попытку найти «фабрику», и в этом случае он передаст ей аргументы для запуска в терминале, и «фабрика» будет управлять этим, затем завершить новый процесс. (Если фабрики нет, она зарегистрирует себя как фабрику, поэтому первый запущенный процесс в конечном итоге будет управлять всеми терминалами.)

"Фабрика" находится по пути -шины D, /org/mate/Terminal/Factory, который жестко запрограммирован в двоичном коде. (Таким образом, реплицируется в другие копии бинарника.)

В частности, в случае mate-terminalвы можете отключить это поведение, передав ему --disable-factoryаргумент строки команды -. (См. справочную страницу для получения дополнительной информации.)

Это довольно уникальный способ работы mate-terminal. В частности, pcmanfmделает это иначе. Неясно, поддерживает ли pcmanfmспособ запуска отдельного процесса, или единственный способ, которым он работает, — это связь через шину D -с существующим экземпляром. (Вам нужно заглянуть в pcmanfm, чтобы убедиться, что это так.)

3
27.01.2020, 22:02

Обходной путь :используйте инструмент, который создает отдельные процессы

У меня есть шелл-скрипт, который создает три терминальных окна на рабочем столе моего основного компьютера. Используя некоторые идеи из моего сценария, я предпринял следующую попытку, которая может сработать для вас (или помочь вам сделать то, что вам нужно ),

#!/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

Я проверил, что он работает в двух установленных системах 18.04 LTS, Lubuntu (как есть )и в стандартной Ubuntu (сvdockw=68).

Сценарий оболочки использует пакеты программ sakura wmctrlи, возможно, xterm, которые доступны в репозитории universeи могут быть установлены с помощью

sudo apt update
sudo apt install sakura wmctrl xterm
0
27.01.2020, 22:02

Теги

Похожие вопросы