Abc 使用node.js执行终端命令

Abc 使用node.js执行终端命令,abc,Abc,Iam正在尝试使用node.js spawn执行终端命令 为此,我使用代码 console.log(args) var child = spawn("hark", args, {cwd: workDir}); child.stdout.on('data', function(data) { console.log(data.toString()) }); child.stderr.on('data', fu

Iam正在尝试使用node.js spawn执行终端命令

为此,我使用代码

console.log(args)

var child = spawn("hark", args, {cwd: workDir});
        child.stdout.on('data', function(data) {

          console.log(data.toString())        
        });

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

        });

        child.on('close', function(code) {
          console.log('closing code: ' + code);

        });
但它将大于
作为字符串处理
“>”和 将输出作为

tshark: Invalid capture filter "> g.xml" 

    That string isn't a valid capture filter (syntax error).
    See the User's Guide for a description of the capture filter syntax.

如何在没有字符串的情况下使用

您可以使用文件流将生成的
hark
的所有输出放到
g.xml

例如:


由于
child
这里有一个流,您可以将它通过管道传输到您记录的文件流中。

'>gggggg.xml'是将stdout重定向到文件的shell语法。您应该使用适当的spawn选项或使用调用shell的
child\u process.exec
。是的,还有一件事..您的编码正在工作..但它没有输出有效的xml文件..某些属性丢失尝试使用选项:我将在手动使用ctrl+C退出正在运行的终端时获取完整的xml文件..但在代码中我尝试了退出进程并终止子进程,但未获得完整输出。在这种情况下,也可以使用“退出”事件而不是“关闭”子进程,但它不会进入“退出”事件或“关闭”事件。这是主要问题。此外,我无法识别进程是否已完成,我使用ctrl+c命令填充终端
// don't need ">" in args
var args = [' 02:00:00:00' ,'-s','pdml'],
    logStream = fs.createWriteStream('./xml');

var spawn = require('child_process').spawn,
    child = spawn('tshark', args);

child.stdout.pipe(logStream);
child.stderr.pipe(logStream);

child.on('close', function (code) {
    console.log('child process exited with code ' + code);
});