第 8 课:子进程

1. 阅读 API 资料

2. execFile 方式调用外部程序

要求:

  • 创建 12-child-process 目录
  • 编写 01-exec-file.js 脚本
  • 可以执行任何一个外部程序
  • 命令行参数中有需要执行的外部程序以及外部程序的参数
  • 如果没有命令行参数,执行 cat 命令,打印 01-exec-file.js 脚本文件内容
  • 外部程序运行的正确信息打印在控制台上
  • 外部程序运行的错误信息打印在控制台上
  • 测试用例 1:执行 ./01-exec-file.js,预期结果:控制台打印 01-exec-file.js 文件内容
  • 测试用例 2:执行 ./01-exec-file.js mkdir abc,预期结果:当前目录下创建 abc 文件夹
  • 测试用例 3:执行 ./01-exec-file.js mkdir abc, 预期结果:报错,abc 文件夹已存在
  • 测试用例 4:执行 ./01-exec-file.js ls -l / /usr /var,预期结果:长格式输出根目录、/usr 和 /var 三个目录的内容
  • 测试用例 5:执行 ./01-exec-file.js abc,预期结果:报错,Error: spawn abc ENOENT

3. spawn 方式调用外部程序

要求:

  • 编写 02-spawn-v1.js 脚本
  • 打印当前进程 ID 信息
  • 执行一个外部命令,例如:cat 打印 02-spawn-v1.js 脚本文件内容

4. 自定义的外部程序

要求:

  • 编写 03-child.js 脚本
  • 打印当前进程 ID 信息
  • 每 2 秒在控制台打印当前时间
  • 16 秒后程序结束运行

5. execFile 调用自定义的外部程序

要求:

  • 编写 04-exec-file.js 脚本
  • 打印当前进程 ID 信息
  • 调用 03-child.js 外部程序
  • 观察程序的运行结果

6. spawn 调用自定义的外部程序

要求:

  • 编写 05-spawn-v2.js 脚本
  • 打印当前进程 ID 信息
  • 调用 03-child.js 外部程序
  • 观察程序的运行结果
  • 比较与 04-exec-file.js 程序运行结果的差异
  • 体会 execFile 和 spawn 方法的区别

7. HTTP 服务调用自定义的外部程序

要求:

  • 编写 06-spawn-v3.js 脚本
  • 创建 HTTP 服务
  • 监听 8080 端口
  • 接收到客户端请求后,执行 03-child.js 外部程序
  • 将任务 4 程序的运行结果,输出到 HTTP 客户端
  • 用 curl 客户端请求服务程序,观察程序运行的结果

8. 管道方式连接多个外部程序

要求:

  • 编写 07-spawn-v4.js 脚本
  • 创建一个 data.txt 文本文件,内容如下:
    wangding
    louying
    wangchenxin
    wangding
    
  • 用 spawn 方法通过管道执行:catsortuniq 三个外部程序
  • 相当于执行命令:cat name.txt | sort | uniq
  • 最终得到有序的、除掉重复内容的信息

9. spawn 进程分离

要求:

  • 编写 08-detach.js 脚本
  • 打印主进程 ID 信息
  • 用 spawn 方法调用 03-child.js 外部程序
  • 外部程序和主进程分离
  • 主进程 5 秒后退出
  • 子进程运行的结果输出到标准输出流中
  • 观察主进程退出后,子进程是否还在运行

10. exec 方式调用外部程序

要求:

  • 编写 09-exec.js 脚本
  • 支持命令行参数
  • 命令行参数描述要只执行的外部程序
  • 执行命令行参数中描述的外部程序
  • 将外部程序的运行结果打印到控制台

11. fork 方法调用外部程序

要求:

  • 编写 10-fork.js 脚本
  • 打印当前进程 ID 信息
  • 用 fork 方法调用 03-child.js 外部程序
  • 主进程 5 秒后退出
  • 观察主进程退出后,子进程是否还在运行

12. 进程间通信之子进程

要求:

  • 编写 11-ipc-child.js 脚本
  • 打印当前进程 ID 信息
  • 接收到父进程发送的消息后,将消息内容打印到控制台
  • 向父进程发送消息

13. 进程间通信之父进程

要求:

  • 编写 12-ipc-father.js 脚本
  • 打印当前进程 ID 信息
  • 用 fork 方法调用 11-ipc-child.js 程序
  • 2 秒后向外部程序发送进程间消息
  • 6 秒后父进程退出执行,并通知子进程结束执行
  • 子进程收到结束信号 5 秒后,子进程退出执行

14. 同步调用外部程序

要求:

  • 编写 13-sync.js 脚本
  • 打印父进程 ID 信息
  • 用 spawn 的同步版本调用 03-child.js 外部程序
  • 观察同步调用外部程序的运行结果和异步调用的区别

2018 -  by 王顶. All rights reserved.本站访客人数  人次

results matching ""

    No results matching ""