Je travaille avec Python Django dans Windows Vista Powershell. Après avoir couru python manage.py runserver
, il me demande CTRL-BREAK
d'arrêter le processus. Mais après avoir tapé cela, Powershell arrête le processus et se ferme. Existe-t-il un moyen d'arrêter le processus et de garder le Powershell ouvert?
powershell
GTyler
la source
la source
Réponses:
Malheureusement, l'hôte de la console PowerShell utilise
Ctrl+C
pour mettre fin à une opération en cours etCtrl+Break
met fin à l'opération ET ferme la session hôte. C'est un choix des plus regrettables à mon humble avis, mais il est là et nous pouvons vivre avec.Je trouve que la chose la plus simple à faire lorsque je rencontre des situations comme celle-ci est de la session PowerShell, exécutez simplement à
cmd
partir de l'invite PowerShell. Maintenant, je contourne PowerShell temporairement et je reviens facilement à ma session PowerShell une fois terminé.L'autre chose que vous devriez probablement envisager est d'utiliser cmd.exe plutôt que PowerShell, sauf s'il existe une fonctionnalité de PowerShell que vous essayez d'exploiter.
la source
Vous pouvez l'essayer de cette façon:
Votre PowerShell lance votre programme Python dans un job
Piège Ctrl-C par le processus principal PowerShell
Lorsque Ctrl-C est piégé, arrêtez le travail lancé à l'étape 1
Ensuite, vous pouvez continuer à poursuivre votre script PowerShell
Pour lancer une tâche en arrière-plan, utilisez start-job
$ killMe = start-job -scriptblock {& python manage.py}
Pour intercepter Ctrl-C, dites à votre console de traiter Ctrl-C comme une entrée, vérifiez cela à partir de MSTN .
[console] :: TreatControlCAsInput = $ true
Exécutez ensuite une boucle d'interface utilisateur pour vérifier la saisie des clés:
Pour arrêter le travail lorsque le "Ctrl-C" est frappé,
stop-job -job $ killMe
Cependant, la vie ne sera pas facile si vous devez interagir avec votre serveur python, qui s'exécute en arrière-plan. Et vous aimeriez probablement afficher constamment la sortie de votre serveur.
la source