Как запустить отдельный процесс а не подпроцесс?
Я передаю в код java аргументы, потом на нажатие кнопки у меня срабатывает subprocess.run(java_args, creationflags=subprocess.CREATE_NO_WINDOW), и потом открывается майнкрафт, но он открывается в подпроцессах исполняемого кода, можно ли сделать так, чтобы он был отдельным процессом? На скриншоте показано как это выглядит
Дополнительно:
Ответы:
Судя по картинке, речь идет про Windows, поэтому ответ будет тоже чисто для Windows.
Сылка на процесс, запустивший данный (типа, на родительский) хоанится в структуре ядра, описывающий сам процесс - и, на самом деле, практически ни на что не влияет. Но если вам так хочется запустить процесс без родителя, запустите промежуточный процесс, запустите из него нужный вам процесс и завершите промежуточный процесс.
- насколько я понимаю если завершить этот промежуточный процесс, то и основной процесс завершится
так как он считался дочерним на момент завершения - solarkaaa, нет, не завершится: в Windows запускающий процесс никоим образом не владеет запускаемым, и ссылка на него в структуре данных, связанной с процессом - чисто информационная.
Об этом можно прочитать в книге Windows Internals. У нее есть несколько изданий и есть их русские переводы "Внутреннее устройство Microsoft Windows". В русском переводе 6-го издания про это написано на стр.22.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Для запуска отдельного процесса в PHP можно использовать функцию `proc_open()`. Эта функция позволяет запустить процесс в отдельном окружении и получить доступ к его вводу/выводу. Вот пример использования:
$descriptorspec = [ 0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['file', '/tmp/error-output.txt', 'a'] ]; $process = proc_open('php -r "echo \'Hello, world!\';"', $descriptorspec, $pipes); if (is_resource($process)) { fclose($pipes[0]); echo stream_get_contents($pipes[1]); fclose($pipes[1]); $return_value = proc_close($process); }
В этом примере мы запускаем процесс `php -r "echo 'Hello, world!';"`, который просто выводит строку "Hello, world!". Мы используем массив `$descriptorspec`, чтобы настроить ввод/вывод процесса. Затем мы читаем вывод процесса, закрываем каналы ввода и вывода, и закрываем процесс.
Обратите внимание, что функция `proc_open()` возвращает дескриптор процесса, который можно использовать для управления процессом. После выполнения процесса, необходимо закрыть дескриптор с помощью `proc_close()`.
Таким образом, используя функцию `proc_open()` вы можете запускать отдельные процессы в PHP и работать с их вводом/выводом.