三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 260|回复: 0
打印 上一主题 下一主题

child.disconnect()

[复制链接]

1562

主题

1564

帖子

4904

积分

博士

Rank: 8Rank: 8

积分
4904
跳转到指定楼层
楼主
发表于 2017-8-8 08:25:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关闭父子进程间的所有 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 是空数组。
第三个参数用来指定附加设置,默认值:
  1. { cwd: undefined,
  2.   env: process.env
  3. }
复制代码
创建的子进程里使用 cwd 指定工作目录,如果没有指定,默认继承自当前的工作目录。
使用 env 来指定新进程可见的环境变量。默认是 process.env。
例如,运行 ls -lh /usr, 获取 stdout, stderr, 和退出代码:
  1. var spawn = require('child_process').spawn,
  2.     ls    = spawn('ls', ['-lh', '/usr']);

  3. ls.stdout.on('data', function (data) {
  4.   console.log('stdout: ' + data);
  5. });

  6. ls.stderr.on('data', function (data) {
  7.   console.log('stderr: ' + data);
  8. });

  9. ls.on('close', function (code) {
  10.   console.log('child process exited with code ' + code);
  11. });
复制代码
例如: 一个非常精巧的方法执行 'ps ax | grep ssh'
  1. var spawn = require('child_process').spawn,
  2.     ps    = spawn('ps', ['ax']),
  3.     grep  = spawn('grep', ['ssh']);

  4. ps.stdout.on('data', function (data) {
  5.   grep.stdin.write(data);
  6. });

  7. ps.stderr.on('data', function (data) {
  8.   console.log('ps stderr: ' + data);
  9. });

  10. ps.on('close', function (code) {
  11.   if (code !== 0) {
  12.     console.log('ps process exited with code ' + code);
  13.   }
  14.   grep.stdin.end();
  15. });

  16. grep.stdout.on('data', function (data) {
  17.   console.log('' + data);
  18. });

  19. grep.stderr.on('data', function (data) {
  20.   console.log('grep stderr: ' + data);
  21. });

  22. grep.on('close', function (code) {
  23.   if (code !== 0) {
  24.     console.log('grep process exited with code ' + code);
  25.   }
  26. });
复制代码


回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-6-27 00:42 , Processed in 0.029569 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表