gpt4 book ai didi

c++ - 为什么在 C++ 方法中使用系统 ("some.exe") 不像命令行那样工作?

转载 作者:可可西里 更新时间:2023-11-01 11:08:40 24 4
gpt4 key购买 nike

我正在为 Windows 编写程序,最终必须启动位于同一台计算机上的不同的预先存在的 .exe。它将多个参数传递给此 .exe 文件。我正在阅读实际的命令和参数并构建命令,但我也尝试用相同的结果对其进行硬编码。这是硬编码版本(我从使用 same.exe 的旧 C 程序中挑选出来的):

system("c://IQapture//dmon2_6_IHD -p2 c://IQapture//mon_table_101_Tx8.txt 11 0 0");

因此在 int _cdecl main(int argc, char**argv) 中的原始程序中,系统的这种使用有效。在我的 C++ 程序中的 C++ 类方法中,当我发出命令时,正确的程序启动但它立即提出一个错误对话框,说明发生了错误。我将用于启动 exe 的系统字符串回显到控制台。失败后,我立即复制并粘贴回显的同一行,这次 exe 运行没有错误。这是可重复的。如果它与时间相关,我尝试在发出系统命令之前添加 10 秒的延迟,但这并不重要。另外,原来的旧程序不需要延迟。这对我来说意味着字符串是正确的并且目标程序可以工作。 system() 调用以某种方式不同于直接命令行调用。该程序编译和构建良好。我正在使用 Visual Studio 2010。

有没有人知道如何使 system() 调用像命令行调用一样工作?

最佳答案

这看起来真的不像是 Windows 会喜欢的那种东西……试试用反斜杠代替:

system("c:\\IQapture\\dmon2_6_IHD -p2 c:\\IQapture\\mon_table_101_Tx8.txt 11 0 0");

如果仍然不起作用,您很可能遇到以下问题之一:

  • 您当前的工作目录有误;
  • 缺少一个环境变量;
  • 您的程序以错误的用户权限运行;
  • 您的程序正在占用生成进程所需的资源(例如您没有关闭它需要作为输入的文件)。

关于c++ - 为什么在 C++ 方法中使用系统 ("some.exe") 不像命令行那样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14574430/

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