关闭父子进程间的所有 IPC 通道,能让子进程优雅的退出。调用这个方法后,父子进程里的.connected 标志会变为 false,之后不能再发送消息。 当进程里没有消息需要处理的时候,会触发 'disconnect' 事件。 注意,在子进程还有 IPC 通道的情况下(如 fork() ),也可以调用 process.disconnect() 来关闭它。 创建异步处理这些方法遵从常用的异步处理模式(比如回调,或者返回一个事件处理)。 child_process.spawn(command[, args][, options])- command {String} 要运行的命令
- args {Array} 字符串参数表
- options {Object}
- cwd {String} 子进程的工作目录
- env {Object} 环境
- stdio {Array|String} 子进程的 stdio 配置。 (见below)
- customFds {Array} Deprecated 作为子进程 stdio 使用的 文件标示符。(见 below)
- detached {Boolean} 子进程将会变成一个进程组的领导者。(参见below)
- uid {Number} 设置用户进程的ID。 (参见 setuid(2))
- gid {Number} 设置进程组的ID。 (参见 setgid(2))
- 返回: {ChildProcess object}
用指定的 command 发布一个子进程, args 是命令行参数。如果忽略, args 是空数组。 第三个参数用来指定附加设置,默认值: - { cwd: undefined,
- env: process.env
- }
复制代码创建的子进程里使用 cwd 指定工作目录,如果没有指定,默认继承自当前的工作目录。 使用 env 来指定新进程可见的环境变量。默认是 process.env。 例如,运行 ls -lh /usr, 获取 stdout, stderr, 和退出代码: - var spawn = require('child_process').spawn,
- ls = spawn('ls', ['-lh', '/usr']);
- ls.stdout.on('data', function (data) {
- console.log('stdout: ' + data);
- });
- ls.stderr.on('data', function (data) {
- console.log('stderr: ' + data);
- });
- ls.on('close', function (code) {
- console.log('child process exited with code ' + code);
- });
复制代码例如: 一个非常精巧的方法执行 'ps ax | grep ssh' - var spawn = require('child_process').spawn,
- ps = spawn('ps', ['ax']),
- grep = spawn('grep', ['ssh']);
- ps.stdout.on('data', function (data) {
- grep.stdin.write(data);
- });
- ps.stderr.on('data', function (data) {
- console.log('ps stderr: ' + data);
- });
- ps.on('close', function (code) {
- if (code !== 0) {
- console.log('ps process exited with code ' + code);
- }
- grep.stdin.end();
- });
- grep.stdout.on('data', function (data) {
- console.log('' + data);
- });
- grep.stderr.on('data', function (data) {
- console.log('grep stderr: ' + data);
- });
- grep.on('close', function (code) {
- if (code !== 0) {
- console.log('grep process exited with code ' + code);
- }
- });
复制代码
|