CTRL-BREAK के बाद PowerShell को खोलें


10

मैं Windows Vista Powershell में Python Django के साथ काम कर रहा हूं। मेरे दौड़ने के बाद python manage.py runserver, यह मुझे CTRL-BREAKप्रक्रिया को रोकने के लिए कहता है। लेकिन मैंने टाइप करने के बाद, Powershell प्रक्रिया को रोक दिया और बंद कर दिया। क्या प्रक्रिया को रोकने और Powershell को खुला रखने का कोई तरीका है?


यह django-windows डिफ़ॉल्ट कई कारणों से भयानक है (जैसे कि कई लैपटॉप और यहां तक ​​कि अंतर्निहित वर्चुअल कीबोर्ड में ब्रेक कुंजी नहीं है)। काश मुझे कोई काम मिल जाता।
मर्टोक

पायथन अक्सर एक प्रक्रिया से बाहर निकलने / रोकने के लिए क्या करना है, इसके बारे में निहित है। लेकिन आप अन्य CTRL- <विकल्प> आज़मा सकते हैं। उदाहरण के लिए: CTRL-C / Z / D
not2qubit

@ user1147688 ctrl + ब्रेक तुरन्त खिड़कियों पर अजगर इंटरप्रेटर को मारता है जबकि ctrl + c को पकड़ा या अनदेखा किया जा सकता है।
स्मित जॉन्थ

जवाबों:


3

दुर्भाग्य से पावरशेल कंसोल होस्ट Ctrl+Cएक चालू ऑपरेशन को समाप्त करने के लिए उपयोग करता है और ऑपरेशन को Ctrl+Breakसमाप्त करता है और होस्ट सत्र को बंद कर देता है। यह एक सबसे दुर्भाग्यपूर्ण विकल्प है IMHO लेकिन यह वहाँ है और हम इसके साथ रहते हैं।

मुझे सबसे आसान काम यह लगता है कि जब मैं इस तरह की स्थितियों में दौड़ता हूँ तो यह PowerShell सत्र cmdसे होता है, बस PowerShell शीघ्र से निष्पादित होता है। अब मैं वास्तव में PowerShell को अस्थायी रूप से दरकिनार कर रहा हूं और जब किया जाता है तो मैं आसानी से अपने PowerShell सत्र में वापस आ जाता हूं।

जब तक आप पावरस् लेल की कुछ विशेषता का उपयोग नहीं करते हैं, तब तक शायद आपको PowerShell के बजाय cmd.exe का उपयोग करने पर विचार करना चाहिए ।


1

आप इसे इस तरह आज़मा सकते हैं:

  1. आपकी शक्तियां आपके अजगर कार्यक्रम को नौकरी में लॉन्च करती हैं

  2. शक्तियों को मुख्य प्रक्रिया से Ctrl-C ट्रैप करें

  3. जब Ctrl-C फंस जाता है, तो चरण 1 में लॉन्च किए गए कार्य को रोक दें

फिर, आप अपनी शक्तियाँ स्क्रिप्ट को जारी रख सकते हैं

  1. बैकग्राउंड जॉब लॉन्च करने के लिए, स्टार्ट-जॉब का उपयोग करें

    $ किलमे = स्टार्ट-जॉब -scriptblock {& python manage.py}

  2. Ctrl-C को फंसाने के लिए, अपने कंसोल को Ctrl-C को एक इनपुट के रूप में मानने के लिए कहें, इसे 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
    }
  }
}
:
  1. "Ctrl-C" के हिट होने पर नौकरी रोकने के लिए,

    स्टॉप-जॉब -जॉब $ किलमे

हालांकि, जीवन आसान नहीं होगा यदि आपको अपने अजगर सर्वर के साथ बातचीत करने की आवश्यकता है, जो पृष्ठभूमि पर चल रहा है। और आप शायद अपने सर्वर के आउटपुट को लगातार प्रदर्शित करना चाहेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.