On Sat, May 26, 2012 at 4:45 PM, Roman Shtylman <[email protected]> wrote:
> https://gist.github.com/1920998
>
> If you run the above code with "node bad_file_descriptor.js sample.js" and
> then send a SIGUSR1 to the parent process it will cause an error:
> (libev) epoll_wait: Bad file descriptor
>
> I think this is related to the fact that on restart, the stdout, etc are no
> longer available since it has been effectively detached from the terminal.
> Thus I am looking for a way to not use the parents stdout/in/err
I rewrote the gist a bit to make it run on a windows-box. I had to
remove all process.on('SIG*', ...) lines, as they are not supported
for windows.
If I then kill the child-process from within the parent-process, it
restarts just fine. Even if I kill the child-process via kill pid on
the commandline, it restarts fine.
The code based on the above gist:
```
var cp = require('child_process')
, path = require('path')
, args = process.argv.slice(0)
, node_path = args.shift()
, self_path = path.resolve(process.cwd, args.shift())
;
console.log(node_path, self_path, args)
// Detach
if(!process.send) {
cp.fork(self_path, args, {
env: process.env
})
process.exit(0)
}
// Starts the script
var script = args.shift()
, child
function startChild() {
child = cp.fork(script, args)
child.on('exit', function() {
process.nextTick(startChild)
})
}
function stopChild() {
child.kill()
child = null
}
startChild()
// Kill the child every three seconds
setInterval(function() {
stopChild()
}, 3000)
```
BTW: I did not know that this works :-)
--
Job Board: http://jobs.nodejs.org/
Posting guidelines:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en