【问题标题】:How to Store cmd memory in c++ using system() Function [C++]如何使用 system() 函数在 C++ 中存储 cmd 内存 [C++]
【发布时间】:2017-05-06 23:35:25
【问题描述】:

看看下面的代码!你会明白我想要什么:

#include <iostream>
#include <windows.h>

    using namespace std;

    int main()
    {  
       system("set plock=24865");
       system("echo %plock%"); // I know this will not work.But How to make it work?

     return 0;
    }

【问题讨论】:

标签: c++ windows codeblocks


【解决方案1】:

每个system() 调用都会创建一个单独的环境,然后在它返回到您的程序时将其销毁。这就是为什么他们不能在彼此之间传递信息。

要为程序环境设置环境变量,请使用putenv() 调用,然后使用getenv() 调用读取它。

system() 调用继承了调用它的程序环境的副本,因此至少您可以使用putenv() 设置变量并让system() 调用的程序读取它们。

如果您希望使用system() 调用外部程序并通过环境变量从中获取信息,您将无法轻松做到这一点。如果这是您的目标,请考虑使用fork()

【讨论】:

    【解决方案2】:

    嗯,正如你所说,那行不通。重要的是要了解为什么system 调用会产生一个子进程来运行 shell,然后您要在该子进程中设置一个环境变量 ,这立即终止。

    所以也许您的问题过于具体,因为它询问如何“使用system()”执行此操作;简短的回答是你不能。 (长答案是您可以在注册表中设置环境变量,但这仅在您打算将其作为对计算机的永久配置更改时才有意义。如果您只是想设置一个变量以供后续使用 @ 这不是最好的主意987654323@来自同一程序的调用..)

    因此,您可以改为使用SetEnvironmentVariable() 函数,该函数将在您当前的进程中设置环境变量(而不是在即将离开的子进程中)。

    更新 - 还有一个选项,在问题的评论线程中提到;但它假定您可以设置变量并立即运行任何/所有依赖于它的命令。如果您可以这样做,您可以将所有命令打包到一个 system 调用中,最简单的是使用批处理脚本...

    【讨论】:

      猜你喜欢
      • 2018-04-20
      • 2012-06-28
      • 2012-09-21
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多