尝试终止进程时出现未知信号错误
Unknown signal error as I try to kill a process
我正在尝试使用 child_process
中的 kill
方法终止进程。但是当我尝试调用该函数时出现以下错误:
TypeError [ERR_UNKNOWN_SIGNAL]: Unknown signal: 18408
我是这样做的:
const ls = spawn('node',['print']);
ls.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
ls.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
ls.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
setTimeout(() => {
ls.kill(ls.pid);
},4000);
这可能是什么原因?我错过了什么?
kill()
发送一个 Unix 信号。这些由数字表示。您应该将信号编号传递给 kill()
,而不是 PID。
尝试
import signal
print(signal.SIGTERM)
这可能会打印出 15
,这是信号 TERM 的编号(通常会终止它发送到的进程)。
在你的程序中你可以调用
ls.kill(signal.SIGTERM)
事实上,Nodejs ChildProcess [=13] 不同于Linux kill()
命令,它以要杀死的进程pid和一个信号作为参数=] 只需要信号参数(根据文档作为字符串)。
这是有道理的,因为子进程已经知道它的 pid(使用 subprocess.pid
时获得的 pid),所以您不需要再次提供它。
要终止您的进程,您可以将有效信号传递给 .kill()
方法:
ls.kill('SIGTERM');
或者,您也可以不带任何参数直接调用子进程的 .kill()
方法,这等同于使用 'SIGTERM' 信号调用它。
ls.kill()
我正在尝试使用 child_process
中的 kill
方法终止进程。但是当我尝试调用该函数时出现以下错误:
TypeError [ERR_UNKNOWN_SIGNAL]: Unknown signal: 18408
我是这样做的:
const ls = spawn('node',['print']);
ls.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
ls.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
ls.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
setTimeout(() => {
ls.kill(ls.pid);
},4000);
这可能是什么原因?我错过了什么?
kill()
发送一个 Unix 信号。这些由数字表示。您应该将信号编号传递给 kill()
,而不是 PID。
尝试
import signal
print(signal.SIGTERM)
这可能会打印出 15
,这是信号 TERM 的编号(通常会终止它发送到的进程)。
在你的程序中你可以调用
ls.kill(signal.SIGTERM)
事实上,Nodejs ChildProcess [=13] 不同于Linux kill()
命令,它以要杀死的进程pid和一个信号作为参数=] 只需要信号参数(根据文档作为字符串)。
这是有道理的,因为子进程已经知道它的 pid(使用 subprocess.pid
时获得的 pid),所以您不需要再次提供它。
要终止您的进程,您可以将有效信号传递给 .kill()
方法:
ls.kill('SIGTERM');
或者,您也可以不带任何参数直接调用子进程的 .kill()
方法,这等同于使用 'SIGTERM' 信号调用它。
ls.kill()