SIGTERM в node.js на Windows - PullRequest
       81

SIGTERM в node.js на Windows

0 голосов
/ 07 мая 2020

Я новичок в node.js и следую некоторым руководствам. В одном из них я выполняю следующий код и ожидаю корректного завершения работы терминала, что не так.

process.stdin.resume();
process.stdin.setEncoding('utf8');

process.stdin.on('data', function(chunk) {
    process.stdout.write('Data! -> ' + chunk);
});

process.stdin.on('end', function() {
    process.stderr.write('End!\n');
});

process.on('SIGTERM', function() {
    process.stderr.write("Why are you trying to terminate me?!?  :-)");
});

console.log("Node is running as process #" + process.pid);

Он работает нормально, но когда я выдаю с другого терминала следующее

taskkill / PID 29884 / F

Я не понимаю функцию

process.on ('SIGTERM', function () ....

выполнить.

Я наткнулся на поток здесь Что такое Windows эквивалент process.on ('SIGINT') в node.js?

Я получаю такое же поведение, убивая процесс, просто возвращается в командную строку

Затем я попытался обновить код, который я получил из потока, с помощью некоторого кода, чтобы перепечатать Данные, которые я ввожу на консоли, не попадают туда (я добавил rl.on ("data", function (chunk))

(process.platform === "win32") {
    var rl = require("readline").createInterface({
        input: process.stdin,
        output: process.stdout
    });

    rl.output.setEncoding('utf8');
    console.log("Node is running as process #" + process.pid);

    rl.on("data", function(chunk) {
        this.output.write('Data! -> ' + chunk);
    });
    rl.on("SIGINT", function() {
        process.emit("SIGINT");
    });
    };

    process.on("SIGINT", function() {
    //graceful shutdown
    process.exit();
    });

rl.on("data", function(chunk) {
        this.output.write('Data! -> ' + chunk);
    });

просто отправляет обратно Строка 'Data! ->' без текста, который я ввожу в консоль, как в случае с 1-м кодом из учебника. Что отсутствует? Конечно, в обоих случаях

process.stderr.write ("Почему вы пытаетесь меня убить?!? :-) ");

не выполняется Спасибо

...