Nodejs子进程被sigterm关闭了,在命令窗口执行就可以了,如何保持活动状态?

问题描述 投票:0回答:2

我想执行类似于使用 xcode 构建 IOS 的命令

    var cp = require("child_process");
    var cmd="xcodebuild archive -project xx.xcodeproj -scheme xxx -archivePath ~/Library/Developer/Xcode/Archives/xxx-ios.xcarchive";
    var o = cp.exec(cmd, execOptions, {
        stdio: "inherit"
    });
    o.stdout.on("data", function (chunk) {
        if (!chunk || chunk.trim() === "" || chunk.trim().indexOf("UP-TO-DATE") != -1) return;
        else {
            console.info(chunk.trim().toString());
        }
    });
    o.stderr.on("data", (data) => {
        console.info(data);
    });
    o.on("close", function (code,signal) {
        if (code === 1) {
            console.info(cmd+ "close code : " + code);
            reject(false);
        } else {
            console.info(cmd+ "close code : " + code);
            resolve(true);
        }
    });

    o.on("exit", (code) => {
        console.info(cmd+ "exit code : " + code);
    });

基本上,如果我给出简单的命令,它就可以工作,但我想通过 xCode 构建 ios,进程被代码 null 和信号“SIGTERM”关闭,我还添加了 maxBuffer 选项,但它仍然不起作用,我该如何让它工作?

nodejs的子进程https://nodejs.org/api/child_process.html

node.js xcode
2个回答
2
投票

哦,根本没有答案,所以我将添加我的解决方案来帮助其他人。 我的问题是它包含太多输出字,并且它达到了最大缓冲区,所以我只需通过以下命令获取更少的输出: var cmd="xcodebuild archive -project xx.xcodeproj -scheme xxx -archivePath ~/Library/Developer/Xcode/Archives/xxx-ios.xcarchive | egrep -w -i -C 2 "(ARCHIVE|错误)"


0
投票

我无法发表评论,所以我会发表一个回复帖子,只是为了表示非常感谢。我已经被这个问题困扰好几天了,并且已经失去了希望。这是我发现的唯一关于它的帖子。您的解决方案非常有效!

© www.soinside.com 2019 - 2024. All rights reserved.