簡體   English   中英

如何使用system()函數[C ++]在C ++中存儲cmd內存

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

看下面的代碼! 您將了解我想要的:

#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調用會生成一個子進程來運行Shell,然后在該子進程中設置環境變量,該環境變量會立即終止。

因此,也許您的問題過於具體,因為它詢問如何“使用system() ”進行操作; 簡短的答案是你不能。 (答案很長,您可以在注冊表中設置環境變量,但是僅當您打算將其作為對計算機的永久配置更改時,這才是明智的選擇。如果您只是想設置一個變量以供后續system()使用,則不是最好的主意。 system()來自同一程序的調用。

因此,您可以使用SetEnvironmentVariable()函數,該函數將在當前進程中(而不是在將要消失的子進程中SetEnvironmentVariable()設置環境變量。

更新 -在問題的注釋線程中提到了另一種選擇; 但是它假定您可以設置變量並立即運行依賴於此變量的任何/所有命令。 在這種情況下,您可以將所有命令打包到一個system調用中,最簡單的方法是使用批處理腳本...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM