Есть ли способ получить pid процесса, запущенного с использованием командного файла? - PullRequest
0 голосов
/ 08 апреля 2020

Итак, сегодня я начал веселый проект. Я хочу иметь возможность запускать и останавливать сервер майнкрафт, используя дискорд-бота. Чтобы запустить сервер, я решил использовать командный файл для выполнения команды. Это было достаточно просто сделать, и я смог убедиться, что он работает, так как я мог запустить его и присоединиться к серверу 'localhost'.

Следующим шагом было создание диска-диска в Python, я делал это раньше, и это тоже не заставило себя долго ждать. Я смог проверить на тестовом сервере разногласий, что бот отвечает на команды.

Последний шаг заключался в том, чтобы сделать команды диска-бота для запуска и остановки сервера. Я смог использовать библиотеку subprocess для вызова командного файла и запуска сервера.

Моя проблема заключается в закрытии сервера. Я планировал использовать pid подпроцесса, чтобы убить его при запуске правильной команды. Однако я столкнулся с проблемой получения pid сервера, так как subprocess.pid () возвращает мне pid пакетного файла (я думаю). Когда я подключаюсь к серверу после попытки завершить его, я могу подключиться.

Есть ли способ получить pid процесса, запущенного с командным файлом? Если вам нужно увидеть код или пакетный файл, просто дайте мне знать!

Я также попытался выполнить команду, что пакетный файл запускается напрямую, но я борюсь с разрешениями, поэтому, если это лучшее решение, я не уверен .

1 Ответ

1 голос
/ 08 апреля 2020

если вы хотите найти подпроцессы, запущенные тем же экземпляром batch / cmd, что и текущий, вы можете использовать WMI и getCmdPID.bat , который вернет текущий pid cmd на уровне ошибки:

call getCmdPID
wmic path Win32_Process  where ParentProcessId='%errorlevel%' get

если он находится в другом экземпляре cmd, вы можете запустить сервер с WMI C, чтобы получить PID запущенного процесса:

WMIC process call create "c:\some.exe","c:\exec_dir"

и перенаправить вывод в файл что вы можете прочитать позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...