[英]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.