首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Node.js 通过进程操作标准输入输出

翻译:疯狂的技术宅 原文:http://2ality.com/2018/05/child-process-streams.html 在本,我们在 Node.js 把 shell 命令作为进程运行。...在进程运行 shell 命令 首先从在进程运行 shell 命令开始: 1const {onExit} = require('@rauschma/stringio'); 2const {spawn...在 A 行,我们将进程的 stdin 连接到当前进程的 stdin。 B 行等待该过程完成。 等待进程通过 Promise 退出 函数 onExit()如下所示。...在进程之间进行管道连接 在下面的例子,函数transform() 将会: 从 source 进程的 stdout 读取内容。 将内容写入 sink 进程的 stdin。...的异步迭代读取”【http://2ality.com/2018/04/async-iter-nodejs.html】 “探索ES2018ES2019”的“异步迭代 一章【http://exploringjs.com

3.2K30

何在进程读取(外部)进程的标准输出标准错误输出结果

最近接手一个小项目,要求使用谷歌的aapt.exe获取apk软件包的信息。依稀记得去年年中时,有个同事也问过我如何获取被调用进程输出结果,当时还研究了一番,只是没有做整理。...它是我们启动进程时,控制进程启动方式的参数。...我们之后将hWrite交给我们创建的进程,让它去将信息写入管道。而我们父进程,则使用hRead去读取进程写入管道的内容。...设置标准输出标准错误输出句柄 si.hStdError = hWrite; // 把创建进程的标准错误输出重定向到管道输入 si.hStdOutput = hWrite...我们使用STARTF_USESTDHANDLES的原因是:我们使用了标准输出标准错误输出句柄。

3.8K10
您找到你想要的搜索结果了吗?
是的
没有找到

Nodejs进程间通信

(标准输入输出)关闭时触发 message:进程通过process.send()发送消息时触发,父子进程之间可以通过这种内置的消息机制通信 可以通过child.stdin,child.stdout...child.stderr访问进程的stdio,这些被关闭的时,进程会触发close事件 P.S.close与exit的区别主要体现在多进程共享同一stdio的场景,某个进程退出了并不意味着stdio...stderr),所以上例能够通过监听当前进程process.stdout的data事件拿到进程输出结果 另外,除了stdioshell选项,spawn()还支持一些其它选项,: const child...) P.S.关于stream及pipe的详细信息,请查看Node 2.原生IPC支持 spawn()及fork()的例子,进程之间可以借助内置的IPC机制通信 父进程: process.on('...四.总结 Node进程间通信有4种方式: 通过stdin/stdout传递json:最直接的方式,适用于能够拿到“进程handle的场景,适用于关联进程之间通信,无法跨机器 Node原生IPC支持:

3.1K30

分享 10 道 Nodejs 进程相关面试题

通过对以下 10 个面试题的分享,助您更好的理解 Node.js进程线程相关知识 快速导航 什么是进程线程?之间的区别?参考:Interview1 什么是孤儿进程?...关于线程进程是服务端一个很基础的概念,在文章 Node.js进阶之进程与线程 中介绍了进程与线程的概念之后又给出了在 Node.js 进程线程的实际应用,对于这块不是很理解的建议先看下。...$ node pipe.js41948 41949 创建一个父进程进程之间传递消息的 IPC 通道实现输出信息 修改 pipe.js 让进程的 stdio 当前进程的 stdio 之间建立管道链接...,进程启动时根据传递的文件描述符去链接 IPC 通道,从而建立父子进程之间的通信机制。...创建步骤 创建进程进程创建新会话(调用系统函数 setsid) 改变子进程工作目录(:“/” 或 “/usr/ 等) 父进程终止 Node.js 编写守护进程 Demo 展示 index.js

1.1K10

分享 10 道 Nodejs 进程相关面试题

通过对以下 10 个面试题的分享,助您更好的理解 Node.js进程线程相关知识 快速导航 什么是进程线程?之间的区别?参考:Interview1 什么是孤儿进程?...关于线程进程是服务端一个很基础的概念,在文章 Node.js进阶之进程与线程 中介绍了进程与线程的概念之后又给出了在 Node.js 进程线程的实际应用,对于这块不是很理解的建议先看下。...$ node pipe.js 41948 41949 创建一个父进程进程之间传递消息的 IPC 通道实现输出信息 修改 pipe.js 让进程的 stdio 当前进程的 stdio 之间建立管道链接...,进程启动时根据传递的文件描述符去链接 IPC 通道,从而建立父子进程之间的通信机制。...创建步骤 创建进程进程创建新会话(调用系统函数 setsid) 改变子进程工作目录(:“/” 或 “/usr/ 等) 父进程终止 Node.js 编写守护进程 Demo 展示 index.js

59610

分享 10 道 Nodejs 进程相关面试题

通过对以下 10 个面试题的分享,助您更好的理解 Node.js进程线程相关知识 快速导航 什么是进程线程?之间的区别?参考:Interview1 什么是孤儿进程?...关于线程进程是服务端一个很基础的概念,在文章 Node.js进阶之进程与线程 中介绍了进程与线程的概念之后又给出了在 Node.js 进程线程的实际应用,对于这块不是很理解的建议先看下。...$ node pipe.js 41948 41949 创建一个父进程进程之间传递消息的 IPC 通道实现输出信息 修改 pipe.js 让进程的 stdio 当前进程的 stdio 之间建立管道链接...,进程启动时根据传递的文件描述符去链接 IPC 通道,从而建立父子进程之间的通信机制。...创建步骤 创建进程进程创建新会话(调用系统函数 setsid) 改变子进程工作目录(:“/” 或 “/usr/ 等) 父进程终止 Node.js 编写守护进程 Demo 展示 index.js

1.3K40

有用的内置Node.js APIs

()将命令行上传递输入输出文件名解析为绝对文件路径,然后使用上面的getFileInfo()获取信息: #!...可以做到: 可读:从文件、HTTP请求、TCP套接字、标准输入等读取。 可写:写入到文件、HTTP响应、TCP套接字、标准输出等。 双工:既可读又可写的。 转换:转换数据的双工。...child process API[20]允许你运行进程,如有必要你可以监控并终止。这里有三个选项: spawn:生成进程。 fork:特殊类型的spawn,可以启动一个新的Node.js进程。...不像worker线程,进程独立于Node.js脚本,并且无法访问相同的内存。 Clusters 当你的Node.js应用程序在单核上运行时,你的64核服务器CPU是否没有得到充分利用?...更简单更强大的选择包括: 进程管理器比如PM2[22],它提供了一个自动集群模式 容器管理系统,Docker[23]或Kubernetes[24] 都可以启动、监控重启同一个Node.js应用程序的多个独立实例

2.2K20

【前端面试题】—53道常见NodeJS基础面试题(附答案)

可是我们还有其他一些常用的需求,比如操作系统 shell命令交互,调用可执行文件,创建进程,进行阻塞式访问或高CPU计算等,进程就是为满足这些需求而产生的。..., process. stdout是输出 //进程输出作为当前程序的输入流,然后重定向到当前程序的控制器输出 child. stdout. pipe(process. stdout) 39、两个...41、进程进程的 stdin、 stdout、 stderror是样的吗? 概念都是一样的。stdin、 stdout、 stderror分别是输入输出、错误。三者都是。...区别是在父进程里,进程的 stdout是输入流, stdin是输出。 42、async都有哪些常用方法?分别怎么用?...但操作系统并没有将多个线程看作多个独立的应用来实现进程的调度、管理资源分配。这是进程线程的主要区别。 51、你知道哪些 Node.js核心模块?

45530

浅析 Node 进程与线程

今天我们从 Node.js(以下简称 Node)的角度来一起学习相关知识,通过本文读者将了解 Node 进程与线程的特点、代码层面的使用以及它们之间的通信。...spawn 以命令加参数数组的形式创建一个进程进程的形式返回 data error 信息。...当一个进程发送消息时,会先序列化为字符串,送入 IPC 信道的一端,另一个进程在另一端接收消息内容,并且反序列化,因此我们可以在进程之间传递对象。...示例 以下是 Node.js 创建进程通信的一个基础示例,主进程创建一个进程并将计算斐波那契数列的第 44 项这一 CPU 密集型的任务交给进程进程执行完成后通过 IPC 信道将结果发送给主进程...而在 win 系统,Node 通过 Shared Handle 来处理负载,通过将文件描述符、端口等信息传递进程进程通过信息创建相应的 SocketHandle / ServerHandle,

89210

Node.js进程与线程

Nodejs没有多线程,为了充分利用多核cpu,可以使用进程实现内核的负载均衡,那我们就要解决以下问题: Node.js 做耗时的计算时候阻塞问题。 Node.js如何开启多进程。...child_process.fork() 产生一个新的Node.js进程,并使用建立的IPC通信通道调用指定的模块,该通道允许在父级之间发送消息。...process.stdin,process.stdoutprocess.stderr这代表着主进程进程共享标准输入输出: let childProcess = spawn("node",['sub_process.js...}); // 进程读取写入的数据 childProcess.stdout.on('data',function(data){     console.log(data); }); // 进程像标准输出写入...filename,options){     let stdio = ['inherit','inherit','inherit']     if(options.silent){ // 如果是安静的  就忽略进程输入输出

1.2K20

何在Node.js编写运行您的第一个程序

此外,由于支持异步执行,Node.js擅长I / O密集型任务,这使得它非常适合Web。 实时应用程序(视频或连续发送接收数据的应用程序)在Node.js编写时可以更高效地运行。...要在macOS或Ubuntu 18.04上安装它,请按照如何在macOS上安装Node.js创建本地开发环境的步骤或在Ubuntu 18.04上如何安装Node.js的“使用PPA安装”部分的步骤进行操作...log方法打印到stdout,因此您可以在控制台中看到它。 在Node.js的上下文中, 是可以接收数据的对象,stdout,或者可以输出数据的对象,网络套接字或文件。...其余参数是用户输入的内容,在本例为: helloworld 。 我们最感兴趣的是用户输入的参数,而不是Node.js提供的默认参数。...当您通过命令行运行此程序时,您将不会注意到stdoutstderr之间的区别,但最好通过stderr打印错误,以便更容易识别处理其他程序, 可以分辨出来。

8.4K30

为什么要用 Node.js

这样,一个简单的 HTTP Server 就算是写完了,输入 node app.js 即可运行,随后访问 便会看到输出结果。...在 C10K 提出时,我们还在使用 Apache 服务器,它的工作原理是每当有一个网络请求到达,就 fork 出一个进程并在进程运行 PHP 脚本。执行完脚本后再把结果发回客户端。...这样可以确保不同进程之间互不干扰,即使一个进程出问题也不影响整个服务器,但是缺点也很明显:进程是一个比较重的概念,拥有自己的堆栈,占用内存较多,一台服务器能运行的进程数量有上限,大约也就在几千左右。...我们可以把用来产生输出结果的 response 参数传递给其他模块,并用异步的方式生成输出结果,最后在回调函数执行真正的输出。...实际上 request fs 模块的文件读取都是一个可读数据: ? 利用管道技术,可以把一个的内容写入到另一个: ?

1.9K20

Node.js快速入门

通常我们用于从一个获取数据并将数据传递到另外一个。 以下实例我们通过读取一个文件内容并将内容写入到另外一个文件。...Node 提供了 child_process 模块来创建进程,方法有: exec - child_process.exec 使用进程执行命令,缓存进程输出,并将进程输出以回调函数参数的形式返回...与spawn方法不同的是,fork会在父进程进程之间,建立一个通信管道,用于进程之间的通信。...,缓存进程输出,并将进程输出以回调函数参数的形式返回。...进程已退出,退出码 0 进程已退出,退出码 0 进程已退出,退出码 0 22、 JXcore 打包 Node.js 是一个开放源代码、跨平台的、用于服务器端网络应用的运行环境。

11.2K10

Node.js】1430- 15 个常见的 Node.js 面试问题及答案

Node.js 是异步的、事件驱动的、非阻塞的单线程的,使得它成为开发下面应用程序的完美候选: 实时应用程序,聊天和提供实时更新的应用程序 将视频或其他多媒体内容流式传输给大量观众的流式应用程序 其他...readFile 函数异步读取文件的全部内容,并存储在内存,然后再传递给用户。 createReadStream 使用一个可读的,逐块读取文件,而不是全部存储在内存。...如何处理 Node.js 未捕获的异常? 我们可以在进程级别捕获应用程序未捕获的异常。...每个进程使用 IPC 与主线程通信,并根据需要将服务器句柄传递给其他进程。主进程可以侦听端口本身并以循环方式将每个新连接传递进程,也可以将端口分配给进程以便进程侦听请求。 9....12. process.nextTick setImmediate 有什么区别? 传递给 setImmediate 函数的回调将在事件队列上的下一次迭代执行。

1.7K20

15 个常见的 Node.js 面试问题及答案

Node.js 是异步的、事件驱动的、非阻塞的单线程的,使得它成为开发下面应用程序的完美候选: 实时应用程序,聊天和提供实时更新的应用程序 将视频或其他多媒体内容流式传输给大量观众的流式应用程序 其他...readFile 函数异步读取文件的全部内容,并存储在内存,然后再传递给用户。 createReadStream 使用一个可读的,逐块读取文件,而不是全部存储在内存。...如何处理 Node.js 未捕获的异常? 我们可以在进程级别捕获应用程序未捕获的异常。...每个进程使用 IPC 与主线程通信,并根据需要将服务器句柄传递给其他进程。主进程可以侦听端口本身并以循环方式将每个新连接传递进程,也可以将端口分配给进程以便进程侦听请求。 9....12. process.nextTick setImmediate 有什么区别? 传递给 setImmediate 函数的回调将在事件队列上的下一次迭代执行。

1.7K20

Node开启多线程多进程

Node的多进程多线程问题 我们知道Node.js是以单线程的模式运行的,但它使用的是事件驱动来处理并发,这样有助于我们在多核cpu的系统上创建多个进程,从而提高性能。...在child_process模块中提供了四个创建进程的方法,区别如下: spawn:进程执行的是非node程序,提供一组参数后,执行的结果以的形式返回。...fork:进程执行的是node程序,提供一组参数后,执行的结果以的形式返回。 node的主进程称为Master线程,进程称为Worker进程。...在创建进程之后,父子进程就可以开始进行通信。 单个Node.js实例运行在单个线程。为了充分利用多核系统,有时候需要启用一组Node.js进程去处理负载任务。...进程之间的通信 在NodeJS,父子进程之间的通信可以通过on('message')send()方法实现通信。

1.8K20

深入理解Node.js 进程与线程(8000长文彻底搞懂)

cb)进程推出监听 三个标准: process.stdout 标准输出、 process.stdin 标准输入、 process.stderr 标准错误输出 process.title 指定进程名称,...通过fork()或者其他API,创建了进程之后,为了实现父子进程之间的通信,父子进程之间才能通过messagesend()传递信息。...进程在启动的过程,根据文件描述符去连接这个已存在的IPC通道,从而完成父子进程之间的连接。...由于底层细节不被应用层感知,所以进程,开发者会有一种服务器对象就是从父进程中直接传递过来的错觉。 Node进程之间只有消息传递,不会真正的传递对象,这种错觉是抽象封装的结果。...目前Node只支持我前面提到的几种句柄,并非任意类型的句柄都能在进程之间传递,除非它有完整的发送还原的过程。 Node.js进程架构模型 我们自己实现一个多进程架构守护Demo ?

2.3K10

深入理解Node.js 进程与线程(8000长文彻底搞懂)

cb)进程推出监听 三个标准: process.stdout 标准输出、 process.stdin 标准输入、 process.stderr 标准错误输出 process.title 指定进程名称,...通过fork()或者其他API,创建了进程之后,为了实现父子进程之间的通信,父子进程之间才能通过messagesend()传递信息。...进程在启动的过程,根据文件描述符去连接这个已存在的IPC通道,从而完成父子进程之间的连接。...由于底层细节不被应用层感知,所以进程,开发者会有一种服务器对象就是从父进程中直接传递过来的错觉。 Node进程之间只有消息传递,不会真正的传递对象,这种错觉是抽象封装的结果。...目前Node只支持我前面提到的几种句柄,并非任意类型的句柄都能在进程之间传递,除非它有完整的发送还原的过程。 Node.js进程架构模型 我们自己实现一个多进程架构守护Demo ?

1K30
领券