Ввод "выхода" закрывает foo.exe вместе с powershell - PullRequest
1 голос
/ 30 апреля 2020

Я установил путь к программе, скажем, «foo.exe», к моему системному пути, и, введя foo в cmd / powershell, запустит программу. Однако, когда я набираю команду exit, чтобы выйти из cmd / powershell, foo.exe также закрывается. Почему это происходит и как я могу предотвратить это?

Это не происходит для всех программ, только для определенных, что означает, что эти определенные должны быть добавлены в путь другим способом, вероятно, или должны быть запущены другим способом, я предполагаю. Тем не менее, поиск по inte rnet в течение долгого времени не дал мне ничего, поэтому была бы полезна небольшая помощь.

1 Ответ

1 голос
/ 30 апреля 2020
  • Если foo.exe является приложением console (скомпилировано для консольной подсистемы Windows), оно будет запускаться синхронно в cmd.exe / PowerShell: то есть управление не будет возвращено вызывающей оболочке до выхода из приложения. Это означает, что у вас даже не будет возможности набрать exit, пока foo.exe уже не завершится.

    • Однако, можно запустить консольное приложение асинхронно , а именно, если вы используете задание для его запуска, через Start-Job или Start-ThreadJob; то есть foo.exe будет затем выполняться в background .

      • В этом случае выход из вызывающей оболочки с exit будет прекратить процесс foo.exe.

      • Чтобы предотвратить это, вместо этого можно использовать командлет Start-Process; на Windows вы можете использовать его для непосредственного запуска foo.exe, который откроется в новом окне консоли по умолчанию; на Unix -подобных платформах вы должны запустить его с помощью утилиты nohup (которая отправляет выходные данные программы в файл с именем nohup.out в текущем каталоге).

  • В отличие от этого, если foo.exe является GUI -системным приложением, оно запускает асинхронно и независимо вызывающей оболочки: то есть управление возвращается к вызывающей оболочке сразу после успешного создания нового процесса, и выход из оболочки не влияет на этот новый процесс.

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