ฉันกำลังทำงานกับ Python Django ใน Windows Vista Powershell หลังจากที่ฉันทำงานpython manage.py runserver
ฉันCTRL-BREAK
จะหยุดกระบวนการ แต่หลังจากที่ฉันพิมพ์ Powershell หยุดกระบวนการและปิด มีวิธีหยุดกระบวนการและเปิด Powershell ไว้หรือไม่
ฉันกำลังทำงานกับ Python Django ใน Windows Vista Powershell หลังจากที่ฉันทำงานpython manage.py runserver
ฉันCTRL-BREAK
จะหยุดกระบวนการ แต่หลังจากที่ฉันพิมพ์ Powershell หยุดกระบวนการและปิด มีวิธีหยุดกระบวนการและเปิด Powershell ไว้หรือไม่
คำตอบ:
น่าเสียดายที่โฮสต์คอนโซล PowerShell ใช้Ctrl+C
เพื่อยกเลิกการดำเนินการต่อเนื่องและCtrl+Break
ยุติการดำเนินการและปิดเซสชันโฮสต์ มันเป็นตัวเลือกที่โชคร้ายที่สุด แต่มันอยู่ที่นั่นและเราจะอยู่กับมัน
ฉันพบสิ่งที่ง่ายที่สุดที่ต้องทำเมื่อพบเจอกับสถานการณ์เช่นนี้จากเซสชัน PowerShell เพียงดำเนินการcmd
จากพรอมต์ PowerShell ตอนนี้ฉันกำลังข้าม PowerShell ชั่วคราวและฉันกลับไปที่ PowerShell ของฉันเมื่อเสร็จแล้ว
สิ่งอื่นที่คุณควรพิจารณาคือการใช้cmd.exeมากกว่า PowerShell เว้นแต่ว่ามีคุณสมบัติบางอย่างของ PowerShell ที่คุณพยายามจะใช้ประโยชน์
คุณสามารถลองด้วยวิธีนี้:
PowerShell ของคุณเปิดตัวโปรแกรม python ของคุณในงาน
Trap Ctrl-C โดยกระบวนการหลัก PowerShell
เมื่อ Ctrl-C ติดกับดักให้หยุดงานที่เรียกใช้ในขั้นตอนที่ 1
จากนั้นคุณสามารถให้สคริปต์ PowerShell ของคุณดำเนินต่อไปได้
ในการเปิดใช้งานพื้นหลังให้ใช้งานเริ่มต้น
$ killMe = start-job -scriptblock {& python Manage.py}
เพื่อดักจับ Ctrl-C, บอกคอนโซลของคุณในการรักษา Ctrl-C เป็น input ตรวจสอบนี้จาก MSTN
[คอนโซล] :: TreatControlCAsInput = $ true
จากนั้นเรียกใช้การวนรอบ UI เพื่อตรวจสอบอินพุตของคีย์:
while ($true) {
write-host "Processing..."
if ([console]::KeyAvailable) {
$key = [system.console]::readkey($true)
if (($key.modifiers -band [consolemodifiers]"control") -and
($key.key -eq "C")) {
:
break
}
}
}
:
หากต้องการหยุดงานเมื่อกดปุ่ม "Ctrl-C"
หยุดงาน -job $ killMe
อย่างไรก็ตามชีวิตจะไม่ใช่เรื่องง่ายหากคุณต้องการโต้ตอบกับเซิร์ฟเวอร์หลามของคุณซึ่งทำงานอยู่เบื้องหลัง และคุณอาจต้องการแสดงผลเซิร์ฟเวอร์ของคุณอย่างต่อเนื่อง