Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用节点子进程抑制标准输出_Node.js_Child Process - Fatal编程技术网

Node.js 使用节点子进程抑制标准输出

Node.js 使用节点子进程抑制标准输出,node.js,child-process,Node.js,Child Process,我正在运行以下代码: var exec = require('child_process').exec; var command = "security set-key-partition-list -S apple-tool:,apple: -s -k password /path/to/keychain/login.keychain-db"; exec(serverConfig.securityCall, function (error, stdout, stderr) { if (

我正在运行以下代码:

var exec = require('child_process').exec;
var command = "security set-key-partition-list -S apple-tool:,apple: -s -k password /path/to/keychain/login.keychain-db";
exec(serverConfig.securityCall, function (error, stdout, stderr) {
    if (error !== null) {
        console.log('exec error: ' + error);
        console.log('STDERR: ' + stderr);
        console.log('STDOUT: ' + stdout);
    }
});
我得到错误:
exec错误:错误:超过标准输出maxBuffer

有没有办法抑制stdout?我不需要它。 我看到这个帖子:

因此,我将其更改为
spawn

var spawn = require('child_process').spawn;
var child = spawn('security', ['set-key-partition-list', '-S apple-tool:,apple: -s -k password /path/to/keychain/login.keychain-db'], {stdio:['ignore', 'ignore', 'pipe']});

child.stderr.on('data', function (data) {
   console.log('stderr: ' + data);
   stderr = 'stderr: ' + data
});

child.on('close', function (code) {
    console.log('child process exited with code ' + code);
    if (!code) { //0 = success 1= error
        console.log("SUCCESS");
    } else {
        console.log('STDERR: ' + stderr);
    }
 });
但我得到了这个错误:

stderr: password to unlock default: security: SecKeychainItemSetAccessWithPassword: The user name or passphrase you entered is not correct.
如果我从命令行运行它,它会工作,所以我知道我的密码是正确的。(出于安全目的,密码和钥匙链路径已被修改)


如何使其与
spawn
exec
一起工作?

您收到的错误来自
安全性
应用程序,而不是节点。使用
spawn
有一个棘手的部分。每个选项都应该是一个单独的数组元素

所以这个数组元素应该被分离成多个元素

'-S apple-tool:,apple: -s -k password /path/to/keychain/login.keychain-db'
差不多

['-S', 'apple-tool:,apple:', '-s', '-k', 'password', '/path/to/keychain/login.keychain-db']
老实说,我不明白为什么文档中没有很好地解释它