Deno 是一个现代的、安全的 JavaScript 和 TypeScript 运行时环境。它使用 V8 引擎还提供了一些有用的内置模块,其中包括子进程模块,使得在 Deno 中执行外部进程非常方便。本文将介绍如何在 Deno 中使用子进程模块来执行外部进程的方法。
在 Deno 中执行外部命令
子进程模块是 Deno 标准库的一部分,可以使用 Deno.run()
方法来创建子进程并与其交互。这个方法返回一个对象,该对象包含运行进程的标准输入、输出和错误流。
下面是一个简单的示例,展示了如何在 Deno 中执行外部命令并获得输出:
-- -------------------- ---- ------- ----- ---- - -------- ------- --------- ----- - - ---------- ---- ---- --- ----- - ---- - - ----- ----------- -- ----- --- -- - ---------------------- ------------- - ---- - ---------------------- ------ ---- ---- ----------- - ----------
在这个示例中,我们使用 Deno.run()
方法创建一个子进程,传入 echo
和 Hello, world!
作为参数。我们随后调用 status()
方法获取子进程状态,包括返回码、进程消耗的 CPU 时间等等,同时通过 close()
方法关闭进程的标准输入、输出和错误流。
在 Deno 中捕获外部命令的输出
对于一些需要捕获外部命令输出的场景,可以通过指定 stdout
和 stderr
属性来实现:
-- -------------------- ---- ------- ----- ---- - ------ -------- ----- - - ---------- ---- ----- ------- -------- ------- ------- --- ----- - ---- - - ----- ----------- -- ----- --- -- - ----- --------- - ----- ----------- --------------- ---------------------------------------- - ---- - ----- -------- - ----- ----------------- ----------------- --------------------------------------- - ----------
在这个示例中,我们指定了 stdout
和 stderr
属性为 "piped"
,这意味着我们需要从子进程读取输出。我们随后根据进程状态获取输出或错误,通过 output()
和 stderrOutput()
方法读入原始数据,使用 TextDecoder
解码方式将二进制数据转换成字符串,最后输出在控制台上。
在 Deno 中异步执行外部命令
在某些情况下,我们需要异步执行外部命令。对于这种场景,我们可以传递第二个参数 opts
来控制执行方式。
-- -------------------- ---- ------- ----- ---- - ------ ------- ----- ----- - - ---------- ---- ----- ------- -------- ------- ------- --- ----- ---------- - -------- - ----------------- - ---------- ----- ---------- - -------- - ----------------- - ---------- ----- ------ - ----- ----------- -- ------------ - --------------- --------------------------------- ------------- - -- ------------ - ----------------- --------------------------------- ------------- - ----------
在这个示例中,我们可以看到传入了 readAll()
函数以接收子进程的输出数据。通过这种方式,我们可以在异步执行外部命令的过程中读取到完整的子进程输出,以便在后续使用。
总结
在本文中,我们介绍了一个使用 Deno 中子进程模块来执行外部进程的方法,并提供了示例代码。我们可以看到,使用 Deno 中子进程模块来执行外部进程非常简单。无论是同步执行还是异步执行外部进程,Denno 在执行都提供了很大的灵活性,并且执行起来非常安全。希望本文能够为您在 Denno 中使用子进程模块提供一些帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/652b40f07d4982a6ebd3f549