node.js 创建子进程 II

  • child_process.spawn可以利用命令行创建一个子进程,并且可以控制子进程的启动,终止,以及通信
/***************
 * spawn创建了一个子进程,并返回一个进程描述符,即句柄
 * 进程句柄都有一个stdout属性,以流的形式输出进程的标准输出信息
 * 可以在这个输出流上绑定事件,监视每个输出
 * ****************/

//tail命令会监控一个文件(不存在则退出),
//如果文件发生改变则在标准输出流中输出文件内容
var spawn = require(‘child_process‘).spawn;

//创建一个子进程,将进程描述符赋值给child
var child = spawn(‘tail‘, [‘-f‘, ‘./test‘]);

//监听标准输出流
child.stdout.on(‘data‘, function (data) {
    console.log(‘tail output: ‘ + data);
});

//终止进程
setTimeout(() => {
    //默认发送SIGTERM
    child.kill();
}, 1000);

//监听子进程退出事件
child.on(‘exit‘, (code, signal) => {
    if (code) {
        //正常退出会有一个退出码,0为正常退出,非0一般表示错误
        console.log(‘child process terminated with code ‘ + code);
    } else {
        //非正常退出,输出退出信号
        console.log(‘child process terminated with signal ‘ + signal);
    }
});
  • spawn创建的子进程,父进程可以通过标准输入输出流与子进程通信
//创建子进程2
var child2 = spawn(‘node‘, [‘add1‘]);

//产生一个随机数
var number = Math.ceil(Math.random() * 1000);

//向子进程输入一个数字
child2.stdin.write(number + "\n");
//获取子进程的标准输出
child2.stdout.once(‘data‘, (data) => {
    console.log(‘child2 get number ‘ + number + ‘ replies with ‘ + data);
});

child.stderr.on(‘data‘, (data) => {
    process.stdout.write(data);
});

setTimeout(() => {
    //可以发送一个信号终止进程
    child2.kill(‘SIGINT‘);
}, 5000);
  • 创建add1.js

    这个程序从标准输入流中读取一个数,加1后输出

//恢复标准输入流
process.stdin.resume();
//输入一个数字,加1再输出
process.stdin.on(‘data‘, (data) => {
    var number;
    try {
        number = parseInt(data.toString(), 10);
        number++;
        process.stdout.write(number + "\n");
    } catch (err) {
        process.stdout.write(err.message + "\n");
    }
});
时间: 2024-12-15 10:06:00

node.js 创建子进程 II的相关文章

node.js 创建子进程

创建father.js文件 /**************** * child_process模块提供产生子进程的方法 * 当有CPU密集型的任务,为了不阻塞事件循环, * 或者是执行一个外部命令可以,产生一个子进程, * 让子进程执行这个任务 * *******************/ var childProcess = require('child_process'); var exec = childProcess.exec; exec("ls", (err, stdout,

Node.js 创建HTTP服务器(经过测试,这篇文章是靠谱的T_T)

Node.js 创建HTTP服务器 如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi. 从这个角度看,整个"接收 HTTP 请求并提供 Web 页面"的需求根本不需 要 PHP 来处理. 不过对 Node.js 来说,概念完全不一样了.使用 Node.js 时,我们不仅仅 在实现一个应用,同时还实现了整个 HTTP 服务器.事实上,我们的 Web 应用以及对应的 Web 服务器基本上是一样的.

node.js在windows下的学习笔记(5)---用NODE.JS创建服务器和客户端

//引入http模块 var http = require('http'); //调用http的createServer的方法,这个方法有一个回调函数,这个回调数 //的作用是没到那个有请求发送给服务器的时候,就执行这个回调函数 http.createServer(function (req, res) { //发送 res.end('Hello World\n'); }).listen(3000, "127.0.0.1");//端口和IP的绑定 console.log('Server

node.js 创建第一个web应用

安装node.js   从http://nodejs.org/ 下载安装程序进行安装. 安装后从开始菜单启动: Node.js command prompt 安装web开发框架Express 如果需要代理访问网络,先用下面的命令设置代理: > npm config set proxy=http://192.168.1.1:8080 运行下面命令进行安装express: > npm install express 执行下面命令,安装可执行程序: > npm install -g [emai

node.js 创建HTTP服务器

这个才是我们学node.js的真正原因,服务器! 1.新建一个 index.js 写下 var myhttp=require('http'); myhttp.createServer(function(req,res){ res.writeHead(200,{'Content-Type':''text/thml''}); res.write('<h1>my http</h1>'); res.write('<p>he he</p>'); res.end(<

2:Node.js 创建HTTP服务器

原文出自:http://www.w3cschool.cc/nodejs/nodejs-http-server.html ===================================================== Node.js 创建HTTP服务器 如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi. 从这个角度看,整个"接收 HTTP 请求并提供 Web 页面"的需求根本不需 要

[转]用Node.js创建自签名的HTTPS服务器

用Node.js创建自签名的HTTPS服务器 创建自己的CA机构 创建服务器端证书 创建客户端证书 将证书打包 创建自己的CA机构 为CA生成私钥 openssl genrsa -out ca-key.pem -des 1024 通过CA私钥生成CSR openssl req -new -key ca-key.pem -out ca-csr.pem 通过CSR文件和私钥生成CA证书 openssl x509 -req -in ca-csr.pem -signkey ca-key.pem -out

Node.js创建自签名的HTTPS服务器

https://cnodejs.org/topic/54745ac22804a0997d38b32d 用Node.js创建自签名的HTTPS服务器 发布于 4 年前  作者 eeandrew  689290 次浏览  最后一次编辑是 2 年前  来自 分享 用Node.js创建自签名的HTTPS服务器 创建自己的CA机构 创建服务器端证书 创建客户端证书 将证书打包 创建自己的CA机构 为CA生成私钥 openssl genrsa -out ca-key.pem -des 1024 通过CA私钥

Node.js创建服务器和模拟客户端请求

1. 何为服务器 服务器是某种长期运行,等待请求资源的应用程序 2. 常见Web应用架构 3. 如何创建web服务器 Web服务器是使用HTTP协议,等待客户端连接后请求资源的驻守应用程序:HTTP协议是应用层的协议,在传输层依然是使用TCP或者UDP协议,一般来说是使用Socket来绑定TCP或者UDP,总的来说创建服务器就是创建一个Socket: 创建服务器的流程: (1)创建Socket (2)为Socket绑定参数 (3)Socket等候请求 (4)处理请求,返回资源 (5)关闭资源 4