Name: js-handler/node_modules/daemon/index.js 
1:
var child_process = require('child_process');
2:
 
3:
// daemonize ourselves
4:
module.exports = function(opt) {
5:
    // we are a daemon, don't daemonize again
6:
    if (process.env.__daemon) {
7:
        return process.pid;
8:
    }
9:
 
10:
    var args = [].concat(process.argv);
11:
 
12:
    // shift off node
13:
    args.shift();
14:
 
15:
    // our script name
16:
    var script = args.shift();
17:
 
18:
    opt = opt || {};
19:
    var env = opt.env || process.env;
20:
 
21:
    // the child process will have this set so we can identify it as being daemonized
22:
    env.__daemon = true;
23:
 
24:
    // start ourselves as a daemon
25:
    module.exports.daemon(script, args, opt);
26:
 
27:
    // parent is done
28:
    return process.exit();
29:
};
30:
 
31:
// daemonizes the script and returns the child process object
32:
module.exports.daemon = function(script, args, opt) {
33:
 
34:
    opt = opt || {};
35:
 
36:
    var stdout = opt.stdout || 'ignore';
37:
    var stderr = opt.stderr || 'ignore';
38:
 
39:
    var env = opt.env || process.env;
40:
    var cwd = opt.cwd || process.cwd;
41:
 
42:
    var cp_opt = {
43:
        stdio: ['ignore', stdout, stderr],
44:
        env: env,
45:
        cwd: cwd,
46:
        detached: true
47:
    };
48:
 
49:
    // spawn the child using the same node process as ours
50:
    var child = child_process.spawn(process.execPath, [script].concat(args), cp_opt);
51:
 
52:
    // required so the parent can exit
53:
    child.unref();
54:
 
55:
    return child;
56:
};