如何使用System()函数[C ]将CMD存储器存储在C 中

How to Store cmd memory in c++ using system() Function [C++]

本文关键字:CMD 存储器 存储 System 函数 何使用      更新时间:2023-10-16

查看下面的代码!您将了解我想要什么:

#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;
    }

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

要为程序的环境设置一个环境变量,请使用putenv()调用,然后使用getenv()调用来阅读。

system()调用继承了调用该程序的环境的副本,因此至少您可以使用putenv()设置变量,并具有system()调用的程序。

如果您期望使用system()调用外部程序,并通过环境变量从中获取信息,则无法轻松执行此操作。如果这是您的目标,请考虑使用fork()

好吧,正如您所说,这是行不通的。重要的是要理解的是为什么system调用催生了一个子进程来运行外壳,然后在该子过程中设置一个环境变量,该迅速终止。

也许您的问题过于特定,因为它询问如何"使用system()"执行此操作;简短的答案是你不能。(很长的答案是您可以在注册表中设置环境变量,但是只有当您打算将其作为对计算机的永久配置更改时,这是明智的。如果您只是想在后续system()中设置一个用于使用的变量,那不是最好的想法。来自同一程序的电话..)

因此,您可以使用SetEnvironmentVariable()函数,该功能将在当前过程中设置环境变量(而不是即将消失的孩子)。

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