windowsHide:true prevents SIGINT on child processes
jabrown85 opened this issue · comments
- Version: v12.10.0
- Platform: Windows 10 x64
- Subsystem:
Example code:
const fs = require('fs')
const { spawn } = require('child_process')
const CODE = `
const fs = require('fs')
process.on('SIGINT', () => {
fs.appendFile('output.log', 'SIGINT Child\\n', () => {})
server.close()
})
fs.appendFile('output.log', 'Started Child\\n', () => {})
const http = require('http')
const server = http.createServer()
server.listen()
`
fs.appendFile('output.log', 'Started Parent\n', () => {})
spawn(process.execPath, ['-e', CODE], {
windowsHide: true
})
Expected output.log
after Ctrl+C
in Command Prompt node main.js
Started Parent
Started Child
SIGINT Child
Actual:
Started Parent
Started Child
The SIGINT
signal is never sent to the child processes. I don't see this documented in the windowsHide
flag. Setting the value to false
results in the expected signal being sent. I know windows doesn't really do signals this way, but it seems inconsistent.
^C handling is implemented through SetConsoleCtrlHandler()
. As you can probably guess from the name, that function only works when there's an actual console.
Not a bug, in other words, but feel free to send a PR if you think the documentation can be improved.
I infer from the execa issue that you're not interested in documenting this so I'll go ahead and close out the issue. PR still welcome, of course.