V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
coloz
V2EX  ›  程序员

一个 nodejs 问题有偿求助

  •  
  •   coloz · 2022-05-10 00:24:54 +08:00 · 1725 次点击
    这是一个创建于 962 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我使用 child_process.exec 调用了一个a.exe,但这个 exe 又调用了另一个b.exe
    现在 stdout 中只能获取到a的输出,获取不了b的输出。
    100 元,求一个解决办法。

    7 条回复    2022-07-01 14:58:19 +08:00
    CRVV
        1
    CRVV  
       2022-05-10 00:32:31 +08:00
    b.exe 的输出是由 a.exe 控制的。如果 a.exe 启动 b.exe 的时候让 b 继承自己的 stdout ,你就能获取到 b.exe 的输出了。

    所以方法应该只有两个,一个是改 a.exe ,另一个是你自己调用 b.exe

    相关的文档是 https://docs.microsoft.com/en-us/windows/win32/procthread/creating-a-child-process-with-redirected-input-and-output
    musi
        2
    musi  
       2022-05-10 07:04:03 +08:00
    a.exe 可不可以设置日志之类的?如果可以则直接读日志文件
    jifengg
        3
    jifengg  
       2022-05-10 08:41:41 +08:00
    如果你单独控制台调用 a 的时候发现它输出了 b 的内容,那有可能不是在 stdout ,有可能是输出到 stderr 了。
    有些程序因为有可能用 stdout 输出关键信息(比如 ffmpeg 输出文件流),所以 log 之类的信息都统一输出到 stderr 了。
    flowerpiggy
        4
    flowerpiggy  
       2022-05-10 12:06:37 +08:00
    把 b.exe 的输出写到 .txt 文档里然后再 node 读取。
    coloz
        5
    coloz  
    OP
       2022-05-10 19:21:29 +08:00
    该问题,已解决,阅读了 b.exe 的源码,发现它不管成功与否都直接把输出到 stderr 了
    superfatboy
        6
    superfatboy  
       2022-05-10 20:18:07 +08:00
    然后 100 元呢?
    coloz
        7
    coloz  
    OP
       2022-07-01 14:58:19 +08:00
    @superfatboy 已经付给发现原因的人了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5784 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:57 · PVG 09:57 · LAX 17:57 · JFK 20:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.