从node.js文档中:
默认情况下,父级将等待分离的子级退出。为防止父级等待给定的子级,请使用child.unref()方法,并且父级的事件循环将其引用计数中不包括该子级。
使用detached选项启动长时间运行的进程时,除非该进程提供了未连接到父级的stdio配置,否则该进程将不会在后台运行。如果父代的stdio被继承,则子代将保持与控制终端的连接。
您需要像下面这样修改代码:
#!/usr/bin/nodevar fs = require('fs');var out = fs.openSync('./out.log', 'a');var err = fs.openSync('./out.log', 'a');var cp = require('child_process');var MANFILE='ALengthyNodeManual.pdf';var child = cp.spawn('gnome-open', [MANFILE], { detached: true, stdio: [ 'ignore', out, err ] });child.unref();


