Пользовательская среда рабочего стола Linux на Electron

Одним из способов является отсоединение дочернего процесса от родительского. Для этого потребуется соответствующий код в дочернем процессе или сценарий-оболочка, который выполняет отсоединение перед выполнением реального кода :

.

#!/usr/bin/env perl
use strict;
use warnings;
die "Usage: $0 command [args..]\n" unless @ARGV;
# diassociate this process (some folks also do a double-fork thing)
use POSIX "setsid";
chdir("/") || die "can't chdir to /: $!";
open( STDIN,  "< /dev/null" ) || die "can't read /dev/null: $!";
open( STDOUT, "> /dev/null" ) || die "can't write to /dev/null: $!";
defined( my $pid = fork() ) || die "can't fork: $!";
exit if $pid;    # non-zero now means I am the parent
( setsid() != -1 ) || die "Can't start a new session: $!";
open( STDERR, ">&STDOUT" ) || die "can't dup stdout: $!";
# and replace ourself with whatever we were called with
exec @ARGV;

, который, если его сохранить как solitary, можно проверить с помощью чего-то вроде:

%./solitary logger greppable
% grep greppable /var/log/system.log
Jun 27 10:52:15 hostn jhqdoe[20966]: greppable
% 

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

Обратите внимание, что это может быть невозможно, если Jenkins (или systemd или что-то еще )использует пространство имен PID, которое процесс не может избежать, независимо от того, как он разветвляется, и в этом случае вам понадобится некоторый уровень контейнера -. решение или вернуться к тому, что вы пытаетесь сделать.

0
27.04.2020, 13:49
1 ответ

Вы наверняка не сможете запустить KDE или Gnome из среды Javascript. Но существуют некоторые настольные проекты Javascript (, такие как тот, который вы можете увидеть в FreeboxOS ).

Взгляните, например, на OS.js:https://demo.os-js.org/

С уважением и удачи в интеграции.

0
19.03.2021, 02:25

Теги

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