2013-11-23 7 views
40

मुझे यह कोड एक अलग SO प्रश्न से मिला है, लेकिन नोड ने tty के बजाय process.stdin.setRawMode का उपयोग करने के लिए शिकायत की है, इसलिए मैंने इसे बदल दिया।Node.js में CTRL + C का पता लगाने

से पहले:

var tty = require("tty"); 

process.openStdin().on("keypress", function(chunk, key) { 
    if(key && key.name === "c" && key.ctrl) { 
    console.log("bye bye"); 
    process.exit(); 
    } 
}); 

tty.setRawMode(true); 

के बाद:

process.stdin.setRawMode(true); 
process.stdin.on("keypress", function(chunk, key) { 
    if(key && key.name === "c" && key.ctrl) { 
    console.log("bye bye"); 
    process.exit(); 
    } 
}); 

किसी भी मामले में, यह सिर्फ एक पूरी तरह से nonresponsive नोड प्रक्रिया है कि कुछ नहीं करता है पहले से शिकायत बनाने रहा है, के बारे में tty, तो एक त्रुटि फेंक, और दूसरा बस कुछ भी नहीं कर रहा है और नोड के मूल CTRL + सी हैंडलर को अक्षम कर रहा है, इसलिए जब मैं इसे दबाता हूं तो यह नोड को भी नहीं छोड़ता है। मैं Ctrl + सीविंडोज में सफलतापूर्वक कैसे प्रबंधित कर सकता हूं?

उत्तर

85

यदि आप इंटरप्ट सिग्नल SIGINT को पकड़ने की कोशिश कर रहे हैं, तो आपको कीबोर्ड से पढ़ने की आवश्यकता नहीं है। nodejs की process वस्तु व्यवधान घटना को उजागर करता है:

process.on('SIGINT', function() { 
    console.log("Caught interrupt signal"); 

    if (i_should_exit) 
     process.exit(); 
}); 

संपादित: एक समाधान के बिना विंडोज पर काम नहीं करता। See here

+2

इसके अलावा यह नहीं है। खिड़कियों पर नहीं है। – user3025492

+1

आप सही हैं। संपादित। – slezica

+1

ऐसा लगता है कि यह पहले ही तय हो चुका है ... 2012 में https://github.com/joyent/node/issues/1553 –

3

उन लोगों के लिए जिन्हें कार्यक्षमता की आवश्यकता है, मुझे death (npm nodule, hah!) मिला।

लेखक भी दावों यह खिड़कियों पर काम करता है:

यह केवल POSIX संगत सिस्टम पर परीक्षण किया गया है। विंडोज सिग्नल पर एक अच्छी चर्चा है, जाहिर है, यह तय/मैप किया गया है।

मैं CTRL + Win32 पर काम करता है (हाँ, मैं हैरान हूं) सी पुष्टि कर सकते हैं।

+0

** अपडेट **: मौत केवल कभी-कभी काम करती है। अन्य नोड पैकेज बेहतर नहीं हैं। सही समाधान कुछ ऐसा है [http://]] (http://stackoverflow.com/questions/10021373/what-is-the-windows-equivalent-of-process-onsigint-in-node-jshttp://stackoverflow.com/questions/10021373/क्या-है-windows-बराबर प्रक्रिया से-onsigint-इन-नोड js)। अब यह काम कर रहा है। – honzajde

संबंधित मुद्दे