child_process.spawn
方法的 options
参数是一个对象,它允许你设置子进程的各种属性。下面是对 options
参数的深入介绍,以及一个使用 spawn
打开记事本的例子。
options 参数深入介绍
-
cwd:
- 类型:
string
- 默认值:
null
- 描述:子进程的当前工作目录。如果为
null
,则默认为父进程的当前工作目录。
- 类型:
-
env:
- 类型:
Object
- 默认值:
process.env
- 描述:子进程的环境变量。默认为父进程的环境变量。
- 类型:
-
stdio:
- 类型:
string
|Array
- 默认值:
'pipe'
- 描述:子进程的 I/O 配置。可以是
'pipe'
、'ignore'
、'inherit'
或一个指向文件描述符的数字。如果是一个数组,则表示每个 I/O 流(stdin、stdout、stderr)的配置。
- 类型:
-
detached:
- 类型:
boolean
- 默认值:
false
- 描述:让子进程在父进程退出后继续运行。在 Windows 上,设置
detached
为true
会使子进程成为新的进程组和会话的领头进程,并使其可以在父进程退出后继续运行。
- 类型:
-
uid、gid:
- 类型:
number
- 默认值:
null
- 描述:设置子进程的用户 ID 和组 ID。如果为
null
,则默认为父进程的用户 ID 和组 ID。
- 类型:
-
shell:
- 类型:
boolean
|string
- 默认值:
false
- 描述:如果为
true
,将在 shell 中执行命令。在 UNIX 上,默认使用/bin/sh
。如果是一个字符串,则指定 shell 的路径和参数。
- 类型:
-
windowsHide:
- 类型:
boolean
- 默认值:
false
- 描述:在 Windows 上隐藏子进程的窗口。
- 类型:
-
windowsVerbatimArguments:
- 类型:
boolean
- 默认值:
false
- 描述:在 Windows 上,不将命令行参数解析为引号括起来的字符串。这在传递包含空格或特殊字符的参数时很有用。
- 类型:
-
stdio 的高级用法:
- 你可以指定
'ipc'
来创建一个用于父子进程间 IPC 通信的管道。 - 你也可以指定一个文件描述符(如
'ignore'
、'pipe'
、'inherit'
或一个数字)的数组,来分别控制 stdin、stdout 和 stderr。
- 你可以指定
打开记事本的例子
以下是一个使用 child_process.spawn
打开记事本的例子:
const { spawn } = require('child_process');
// 在 Windows 上打开记事本
const child = spawn('notepad.exe');
// 监听错误事件
child.on('error', (err) => {
console.error('打开记事本失败:', err);
});
// 当子进程退出时打印退出码
child.on('close', (code) => {
console.log(`记事本已退出,退出码:${code}`);
});
在这个例子中,我们使用 spawn
方法来执行 notepad.exe
,从而打开记事本。我们还监听了错误事件和关闭事件,以便在出现问题或记事本关闭时得到通知。