gpt4 book ai didi

node.js - childprocess.spawn 或 exec 通过 stderr 而不是 stdout 显示输出

转载 作者:搜寻专家 更新时间:2023-10-31 23:51:54 24 4
gpt4 key购买 nike

这段代码:

const spawn = require('child_process').spawn;
const convert = spawn('convert', ['nda.pdf', 'nda.jpg']);

convert.stdout.on('data', function (data) {
console.log('stdout: ' + data.toString());
});

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

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

显示此输出:

stderr: /tmp/magick-27144xZVKt6FGxrJR1 PNG 2409x3420 2409x3420+0+0 8-bit sRGB 1.027MB 
stderr: 0.150u 0:00.149

stderr: /tmp/magick-27144xZVKt6FGxrJR2 PNG 2409x3423 2409x3423+0+0 8-bit sRGB 4.237MB 0.250u 0:00.260

stderr: /tmp/magick-27144xZVKt6FGxrJR3 PNG 2409x3423 2409x3423+0+0 8-bit sRGB 3.911MB 0.240u 0:00.239

stderr: /tmp/magick-27144xZVKt6FGxrJR4 PNG 2409x3417 2409x3417+0+0 8-bit sRGB 1.241MB 0.190u 0:00.190
...
...
...
stderr: nda.pdf=>Palette-3.jpg[3] PNG 2409x3417 2409x3417+0+0 16-bit sRGB 759KB 11.210u 0:02.369

child process exited with code 0

所以它似乎将输出重定向到 stderr 而不是 stdout 而且执行的命令一切正常。

当我使用 child_process.exec() 时也会发生同样的情况。

为什么会这样?

最佳答案

我在通过 Python 运行命令时遇到了类似的问题。实际问题出在您尝试运行的命令本身。要知道您的命令输出到 stderr 或 stdout,请执行以下操作:

root@sh> cmd > /tmp/file 

如果您看到命令的输出转到/tmp/file,则意味着默认情况下该命令将其输出抛出到 stdout。如果它不起作用,您实际上可以在屏幕上看到打印的内容。

现在,如果您看到屏幕上粘贴的内容,请运行

root@sh> cmd 2> /tmp/file

现在,如果内容移动到/tmp/file,则意味着该命令实际上将其通常的输出抛出到 stderr。

然后您可以确认真正的问题不在于您使用的语言,而在于实际命令将其输出(到 stderr 或 stdout)的方式。

关于node.js - childprocess.spawn 或 exec 通过 stderr 而不是 stdout 显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41945538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com