微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SIGINT 处理程序未在 nodejs 脚本中调用

如何解决SIGINT 处理程序未在 nodejs 脚本中调用

信息

  • nodejs 版本:v14.16.0
  • 操作系统:Ubuntu 20.04.2 LTS

问题

SIGTERMSIGINT 信号发送到进程时,我想关闭 puppeteer 浏览器。

SIGTERM 处理程序按预期工作。

但是 SIGINT 处理程序甚至没有被调用:我尝试使用 ctrl + ckill -s SIGINT <pid>

脚本如下:

const puppeteer = require("puppeteer");

async function start() {
    const browser = await puppeteer.launch({
        args: ["--no-sandBox"],executablePath: "/usr/bin/google-chrome",});

    console.log("browser Launched");

    browser.on("disconnected",() => console.log("browser disconnected"));

    function cleanUp(signal) {
        console.log("signal: " + signal);
        browser.close();
    }

    process.on("SIGTERM",cleanUp);
    process.on("SIGINT",cleanUp);
}

console.log(process.pid);
start();

我尝试使用这个 python 脚本,SIGINT 处理程序按预期工作。

import signal
import os
import sys

def signal_handler(sig,frame):
    print('You pressed Ctrl+C!')
    sys.exit(0)

signal.signal(signal.SIGINT,signal_handler)
print('Press Ctrl+C')
print(os.getpid())
signal.pause()

我无法找出问题的根源,将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。