child_process spawn如何传递参数子进程接收不到
时间: 2023-11-22 17:52:43 浏览: 39
在使用 `child_process.spawn()` 方法创建子进程时,可以通过第二个参数传递给子进程的命令行参数,例如:
```javascript
const { spawn } = require('child_process');
const ls = spawn('ls', ['-lh', '/usr']);
ls.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
ls.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
ls.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
```
在上面的例子中,`spawn('ls', ['-lh', '/usr'])` 表示创建一个子进程来执行 `ls -lh /usr` 命令。`['-lh', '/usr']` 是传递给子进程的命令行参数。
如果子进程没有接收到参数,可能是因为参数的格式不正确。可以尝试将参数作为一个字符串传递给 `spawn()` 方法,例如:
```javascript
const { spawn } = require('child_process');
const ls = spawn('ls -lh /usr', { shell: true });
ls.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
ls.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
ls.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
```
在上面的例子中,`{ shell: true }` 表示使用 shell 来执行命令,并且将命令和参数组合成一个字符串传递给子进程。这样子进程就可以正确地接收到参数了。