किसी को भी मेरे बीच का अंतर बता सकते हैं ctrl+ zऔर ctrl+ c?
जब मैं टर्मिनल में होता हूं, तो दोनों संयोजन वर्तमान प्रक्रिया को रोक देते हैं, लेकिन दोनों के बीच वास्तव में क्या अंतर है?
किसी को भी मेरे बीच का अंतर बता सकते हैं ctrl+ zऔर ctrl+ c?
जब मैं टर्मिनल में होता हूं, तो दोनों संयोजन वर्तमान प्रक्रिया को रोक देते हैं, लेकिन दोनों के बीच वास्तव में क्या अंतर है?
जवाबों:
यदि हम किनारे के मामलों को एक तरफ छोड़ देते हैं, तो अंतर सरल है। Control+ Cआवेदन को लगभग तुरंत रद्द कर देता है जबकि Control+ Zइसे पृष्ठभूमि में बंद कर देता है, निलंबित कर दिया जाता है।
शेल इन संयोजनों पर अंतर्निहित अनुप्रयोगों के लिए अलग-अलग संकेत भेजता है:
Control+ C(नियंत्रण वर्ण intr) SIGINT भेजता है जो अनुप्रयोग को बाधित करेगा। आमतौर पर यह गर्भपात का कारण बनता है, लेकिन यह निर्णय लेने के लिए आवेदन पर निर्भर है।
Control+ Z(नियंत्रण चरित्र susp) SIGTSTP को एक अग्रभूमि अनुप्रयोग में भेजता है, इसे प्रभावी रूप से पृष्ठभूमि में रखकर निलंबित कर दिया जाता है। यह उपयोगी है अगर आपको किसी चीज़ को तोड़ने के लिए एक संपादक की तरह बाहर निकलने की ज़रूरत है और आपको आवश्यक कुछ डेटा हड़पने के लिए। आप आवेदन में वापस जा सकते हैं fg(या %xजहां xदिखाया गया है कि नौकरी नंबर कहां है jobs)।
हम इसे चलाकर nano TEST, फिर Control+ Zऔर फिर दबाकर परीक्षण कर सकते हैं ps aux | grep TEST। यह हमें दिखाएगा कि nanoप्रक्रिया अभी भी चल रही है:
oli 3278 0.0 0.0 14492 3160 pts/4 T 13:59 0:00 nano TEST
इसके अलावा, हम देख सकते हैं (उस टी से, जो स्थिति कॉलम में है) कि प्रक्रिया को रोक दिया गया है । तो यह अभी भी जीवित है, लेकिन यह नहीं चल रहा है ... इसे फिर से शुरू किया जा सकता है।
यदि वे सो रहे हैं तो कुछ अनुप्रयोग क्रैश हो जाएंगे (जैसे कि एक वेब अनुरोध)।
bg(इसके बजाय fg) चलाना संभव है; प्रभावी रूप से आपको आवेदन और आवेदन शुरू करने वाले दोनों शेल का नियंत्रण प्रदान करता है, जैसे कि आपने आवेदन शुरू करते समय उपयोग किया था । यह अक्सर काम में आता है जब आप इसे :) के साथ शुरू करना भूल जाते हैं&&
fgफिर से टाइप करके उस प्रक्रिया में वापस आ सकते हैं !
ctrl cया तो करने के बाद अग्रभूमि में लौटना है ctrl z? यह SID (बैश) को डिफॉल्ट करता है?
Control+ Zएक प्रक्रिया को स्थगित करता है ( SIGTSTP) और Control+ Cएक प्रक्रिया को बाधित करता है ( SIGINT)
http://en.wikipedia.org/wiki/Control-Z
यूनिक्स जैसी प्रणालियों पर, नियंत्रण + जेड एक प्रक्रिया को निलंबित करने वाले प्रमुख अनुक्रम के लिए सबसे आम डिफ़ॉल्ट कीबोर्ड मैपिंग है
http://en.wikipedia.org/wiki/Control-C
POSIX सिस्टम में, अनुक्रम सक्रिय प्रोग्राम को SIGINT सिग्नल प्राप्त करने का कारण बनता है। यदि प्रोग्राम निर्दिष्ट नहीं करता है कि इस स्थिति को कैसे संभालना है, तो इसे समाप्त कर दिया गया है। आमतौर पर एक प्रोग्राम जो एक SIGINT को संभालता है वह अभी भी खुद को समाप्त करेगा, या कम से कम इसके अंदर चल रहे कार्य को समाप्त करेगा
Ctrl+ Cका उपयोग सिग्नल के साथ एक प्रक्रिया को मारने के लिए किया जाता है SIGINT, दूसरे शब्दों में यह एक विनम्र हत्या है ।
Ctrl+ Z का उपयोग सिग्नल भेजने की प्रक्रिया को स्थगित करने के लिए किया जाता है SIGTSTP, जो नींद के संकेत की तरह है, जिसे पूर्ववत किया जा सकता है और इस प्रक्रिया को फिर से शुरू किया जा सकता है।
लेकिन जब एक प्रक्रिया निलंबित कर दिया है, हम इसे फिर से से शुरू कर सकते हैं fg(अग्रभूमि में फिर से शुरू) और bg(पृष्ठभूमि में फिर से शुरू), लेकिन मैं एक की मौत हो गई प्रक्रिया को फिर से शुरू नहीं कर सकते, कि का उपयोग कर के बीच एक अंतर है Ctrl+ Cऔर Ctrl+ Z।
हम निलंबित प्रक्रियाओं को कैसे देख सकते हैं?
jobsआदेश इस तरह उत्पादन देता है:
[1]- Stopped cat
[2]+ Stopped vi
पृष्ठभूमि में एक निलंबित प्रक्रिया को कैसे मारना है?
killआदेश का उपयोग करके :
kill %nकमांड nद्वारा प्रदर्शित संख्या कहां है jobs। तो अगर मैं बिल्ली को मारना चाहता हूं kill %1:।
सीधे शब्दों में:
CTRL-C अनुरोध है कि कार्यक्रम निरस्त करें ।
CTRL-Z कार्यक्रम को निलंबित करने और पृष्ठभूमि में जाने के लिए मजबूर करता है ।
यह आपको बाद में कमांड के साथ इसे फिर से शुरू करने की अनुमति देता है fg। जब आप लॉगिन शेल से बाहर निकलते हैं तो शेष पृष्ठभूमि कार्य मारे जाते हैं।
यह मदद करनी चाहिए
Ctrl+ Zका उपयोग सिग्नल SIGSTOP को भेजकर एक प्रक्रिया को निलंबित करने के लिए किया जाता है, जिसे प्रोग्राम द्वारा इंटरसेप्ट नहीं किया जा सकता है। जबकि Ctrl+ Cका उपयोग सिग्नल SIGINT के साथ एक प्रक्रिया को मारने के लिए किया जाता है, और इसे एक प्रोग्राम द्वारा इंटरसेप्ट किया जा सकता है ताकि यह बाहर निकलने से पहले अपने आप को साफ कर सके, या बिल्कुल बाहर न निकले।
SIGTSTP, जिसे प्रोग्राम द्वारा पकड़ा जा सकता है। चार अलग-अलग संकेत है, जो एक कार्यक्रम को स्थगित कर सकते हैं SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU। उनमें से केवल SIGSTOPअवरुद्ध नहीं किया जा सकता है। अन्य तीन का उपयोग टर्मिनल द्वारा विभिन्न परिस्थितियों में प्रक्रिया को रोकने के लिए किया जाता है।
जब आप ctrl+ दबाते हैं c, तो इसका मतलब है कि आप अपनी प्रक्रिया को SIGINT भेजते हैं। जैसे आप यह आदेश लिखें: kill -SIGINT <your_pid>। यह आपकी प्रक्रिया को मार देगा। पीएस कमांड जारी करते समय आप इसे क्यों नहीं देख सकते हैं ।
जब आप ctrl+ दबाते हैं z, तो इसका मतलब है कि आप अपनी प्रक्रिया में SIGSTOP भेजें। जैसे आप यह आदेश लिखें: kill -SIGKSTOP <your_pid>। यह आपकी प्रक्रिया को रोक देगा, लेकिन प्रक्रिया अभी भी जीवित है। तो आप अपनी प्रक्रिया को SIGCONT भेजकर अपनी प्रक्रिया को फिर से सक्रिय कर सकते हैं।