अग्रभूमि काम के साथ ctrl c बनाम ctrl z


26

Ctrl+ Zनौकरी रोकता है जबकि Ctrl+ Cनौकरी को मारता है।

ऐसा क्यों है? क्या दूसरा रास्ता अधिक समझ में नहीं आएगा?

z@z-lap:~$ sleep 100&
[1] 4458
z@z-lap:~$ sleep 200&
[2] 4459
z@z-lap:~$ jobs
[1]-  Running                 sleep 100 &
[2]+  Running                 sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^Z
[1]+  Stopped                 sleep 100
z@z-lap:~$ jobs
[1]+  Stopped                 sleep 100
[2]-  Running                 sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^C
z@z-lap:~$ jobs
[2]+  Running                 sleep 200 &

4
"दूसरे तरीके से अधिक समझ में नहीं आएगा?" क्या आप बता सकते हैं कि आपको क्यों लगता है कि यह होगा?
ग्लैग्लग

जवाबों:


55

मुझे लगता है कि आप नौकरी नियंत्रण संकेतन के बारे में भ्रमित हो सकते हैं। विशेष रूप से "स्टॉप्ड" का मतलब है कि एक नौकरी अभी भी जीवित है लेकिन यह है कि किसी भी चीज़ को संसाधित करने की क्षमता रखी गई है (कुछ भी संसाधित करने के लिए सीपीयू पर इसे कोई समय नहीं दिया जाता है)। यह प्रभावी रूप से एक "पॉज़" या "सस्पेंडेड" स्थिति है, हालांकि यह सही तकनीकी शब्द नहीं है।

  • CtrlCनौकरी को "बंद" नहीं करता, इसे रद्द करता है या उसे मारता है। तकनीकी रूप से यह एक बाधा संकेत का कारण बनता है कि उसे यह बताकर कार्यक्रम में भेजा जाए कि वह क्या कर रहा है और तुरंत बाहर निकल जाए। कुछ कार्यक्रम इस संकेत को सुनेंगे और बाहर निकलने से पहले खुद पर कुछ आपातकालीन सफाई कार्य करेंगे। अन्य लोग संकेत का जवाब नहीं देंगे और बाद में बस निरस्त कर दिए जाएंगे।

  • CtrlZदूसरी ओर, नौकरी रोक देता है। फिर से इसे सिग्नल के साथ किया जाता है, लेकिन इस बार यह एक 'इंटरप्ट' सिग्नल के बजाय 'स्टॉप' है। यह प्रभावी रूप से इसे होल्ड पर रखता है और शेल पर नियंत्रण लौटाता है, लेकिन वास्तव में नौकरी को नहीं मारता है। यदि आप इस तरह की नौकरी को चालू रखना चाहते हैं, तो आप bgअंतिम बंद नौकरी को पृष्ठभूमि में भेजने के लिए एक आदेश जारी कर सकते हैं । यह तब बैकग्राउंड जॉब के रूप में चलता रहेगा जैसे कि आपने इसे &पहली जगह पर चलाया था । आप fgअग्रभूमि में अंतिम रुकी हुई नौकरी को फिर से शुरू करने के लिए उपयोग कर सकते हैं (यह जारी रखने की अनुमति देता है कि यह कहाँ छूट गया, और आपको फिर से बातचीत करने की अनुमति देता है)।


मुझे अभी भी लगता है कि Ctrl + Z SIGKILL भेजेगा और Ctrl + C SIGINIT भेजता है। तो Ctrl + Z काम को भी मार देगा। लेकिन मेरे उदाहरण से Ctrl + Z केवल आपके कहे अनुसार काम रोकता है। तो यह मुझे थोड़ा भ्रमित करता है।
नव जू

10
@ neo0 - शायद आप कुछ अजीब कस्टम सेटअप के अभ्यस्त हैं? आप उस सामान को कॉन्फ़िगर कर सकते हैं - हालाँकि आपको शायद ऐसा नहीं होना चाहिए जब आपके पास कोई एप्लिकेशन हो जो उन मानचित्रों पर निर्भर हो। लेकिन डिफ़ॉल्ट कॉन्फ़िगरेशन है CTRL+C=SIGINTऔर CTRL+Z=SIGTSTP
मिकसेर

3
कालेब सही है (+1)। Ctrl-Z प्रोग्राम को रोक देता है, जिसे आपको "फ्रीजिंग" के रूप में मानना ​​चाहिए, लेकिन यह प्रोग्राम अभी भी मेमोरी में है, यह फाइलें खोली गई है, आदि। यह मारा नहीं गया है / समाप्त नहीं हुआ है।
ओलिवियर दुलक

"सस्पेंड" "रोक" की तुलना में स्पष्ट हो सकता है।
रसेल बोरोगोव

1
@ जिगगंजर कि चीजों के आकार के बारे में है। यह उत्तर इस बात की पृष्ठभूमि देता है कि दो चरणों की आवश्यकता क्यों है और यह उन चरणों को अधिक दर्द रहित बनाने के लिए कुछ कार्यों का परिचय देता है।
कालेब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.