নোড.জেজে সিটিআরএল + সি সনাক্ত করা হচ্ছে


91

আমি এই কোডটি একটি অন্য এসও প্রশ্ন থেকে পেয়েছি, তবে নোড টিটিটির পরিবর্তে প্রসেস.স্টদিন.সেটরউমোড ব্যবহার করার অভিযোগ করেছে, তাই আমি এটিকে পরিবর্তন করেছি।

আগে:

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();
  }
});

যাইহোক, এটি কেবল সম্পূর্ণ অভিযোগহীন নোড প্রক্রিয়া তৈরি করছে যা প্রথমে অভিযোগ না করে প্রথমে ttyকোনও ত্রুটি ছুঁড়েছে, এবং দ্বিতীয়টি কিছুই করছে না এবং নোডের নেটিভ CTRL+ Cহ্যান্ডলারকে অক্ষম করে , তাই আমি যখন নোড ছাড়ি না তখনও এটা টিপুন. আমি কিভাবে সফলভাবে সব ব্যবস্থা করতে সক্ষম Ctrl+ + Cমধ্যে উইন্ডোজ ?

উত্তর:


175

আপনি যদি বাধা সংকেত ধরার চেষ্টা করছেন SIGINT, আপনার কীবোর্ড থেকে পড়ার দরকার নেই। এর processঅবজেক্টটি nodejsএকটি বিঘ্নিত ইভেন্টটি প্রকাশ করে:

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

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

সম্পাদনা করুন : উইন্ডোজটিতে কোনও কর্মক্ষেত্র ছাড়া কাজ করে না। এখানে দেখো


4
ব্যতীত এটি হয় না। উইন্ডোজে নয় la
ব্যবহারকারী 3025492

4
দেখে মনে হচ্ছে এটি ইতিমধ্যে 2012 সালে স্থির হয়েছে ... github.com/joyent/node/issues/1553
ম্যাসন ওয়ান

11
: ভবিষ্যতের পাঠকদের জন্য, এই প্রশ্ন এখানে উইন্ডোগুলির উত্তর stackoverflow.com/a/14861513/2020425
Griffork

ম্যাজিকের মতো কাজ করে। গ্রহণযোগ্য উত্তর হওয়া উচিত। ধন্যবাদ
অথবা Assayag

6

যাদের কার্যকারিতা প্রয়োজন তাদের জন্য আমি মৃত্যুর সন্ধান পেয়েছি (এনপিএম নোডুল, হাহ!)

লেখক দাবি করেছেন যে এটি উইন্ডোতে কাজ করে:

এটি কেবল পসিক্স সামঞ্জস্যপূর্ণ সিস্টেমে পরীক্ষা করা হয়েছে। উইন্ডোজ সিগন্যালে একটি দুর্দান্ত আলোচনা এখানে দৃশ্যত, এটি স্থির / ম্যাপ করা হয়েছে।

আমি win32 এ CTRL+ Cকাজগুলি নিশ্চিত করতে পারি (হ্যাঁ, আমি অবাক হয়েছি)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.