You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fly Machine执行系统命令遇context deadline exceeded错误求助

问题分析与解决方法

这个超时错误确实是输入重定向导致的——Fly Machine的exec API不会自动启动shell来解析<这类重定向符号,它会把./program < input.txt整个当作命令和参数执行,结果程序启动后一直在等待标准输入(重定向逻辑未生效),最终触发超时。

以下是三种可行的解决方式:


方法1:用Shell包裹命令,让Shell处理重定向

修改API请求中的cmd字段,用sh -c包裹原命令,让Shell来解析重定向逻辑:

{
    "cmd": "sh -c \"./program < input.txt\""
}

方法2:修改C++程序,直接读取指定文件

如果不想依赖Shell重定向,可以修改程序,让它通过命令行参数接收输入文件路径:

#include <string>
#include <fstream>
#include <iostream>

int main(int argc, char* argv[]) {
    std::string input;
    if (argc >= 2) {
        // 从指定文件读取内容
        std::ifstream file(argv[1]);
        if (file.is_open()) {
            std::getline(file, input);
        } else {
            std::cout << "Failed to open file: " << argv[1] << std::endl;
            return 1;
        }
    } else {
        // 兼容原逻辑:从标准输入读取
        std::cout << "Please enter some text: ";
        std::getline(std::cin, input);
    }
    std::cout << "You entered: " << input << std::endl;
    return 0;
}

编译后,API请求的cmd改为:

{
    "cmd": "./program input.txt"
}

方法3:通过API的stdin参数直接传递输入内容

如果输入内容可以提前获取,无需依赖本地文件,直接通过API的stdin字段传入内容:

{
    "cmd": "./program",
    "stdin": "Hello, this is input from a file."
}

内容的提问来源于stack exchange,提问作者Raaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:35:06