Abc 使用node.js执行终端命令
Iam正在尝试使用node.js spawn执行终端命令 为此,我使用代码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
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);
});