【问题标题】:Empty file output from calling external program with output redirection in C++在 C++ 中使用输出重定向调用外部程序的空文件输出
【发布时间】:2014-07-01 10:13:34
【问题描述】:

从 C++ 源代码,我执行以下行:

system("../BWAPI/ITUBot/Clingo/clingo.exe bwapi-data/AI/ITUBotWall.txt > bwapi-data/AI/solver-out.txt");

此行会导致创建一个空的solver-out.txt。如果我从 C++ 程序外部使用命令行执行相同的命令,则输出文件已成功创建并包含相关内容。

ITUBotWall.txt 在此命令之前创建。这与问题有关吗?

这背后的原因是什么?我错过了什么,我该如何解决?

【问题讨论】:

  • 我通过使用iss(token) 而不是iss << token 来修复它。然后删除了问题。
  • 两者都应该工作,不过...

标签: c++ command-line command io-redirection external-process


【解决方案1】:

你应该让所有路径都是绝对的。

【讨论】:

    【解决方案2】:

    试试这个 -:
    system("../BWAPI/ITUBot/Clingo/clingo.exe < bwapi-data/AI/ITUBotWall.txt > bwapi-data/AI/solver-out.txt");

    【讨论】:

    • 没有区别。还是空文件。
    • 您确定输入的文件路径正确吗?尝试输入完整的绝对路径。而不是bwapi-data/AI/ITUBotWall.txt,试试<partition letter>:/.../bwapi-data/AI/ITUBotWall.txt。输出文件和可执行文件相同。
    • 我确定是因为solver-out.txt就是由这一行生成的。
    • 在代码中的 system() 行之后写入 perror("")。您收到任何错误消息吗?
    • 我没有使用stdout,我正在使用游戏内文本进行调试。所以我在系统调用前后打印了_doserrno。输出是之前:3,之后:0。调用外部程序后好像没有错误。
    猜你喜欢
    • 1970-01-01
    • 2016-06-17
    • 2011-02-08
    • 2021-09-09
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多