使用system()的C ++不存储变量?

时间:2018-03-29 22:09:21

标签: c++ powershell batch-file

因此,我尝试使用system()运行一系列命令,但我注意到更改无法继续进行。例如,我将变量p定义为用户输入set /p p=Enter name(或在powershell $p=Read-Input "Enter Name"中 现在,如果我想再次使用P,我使用system("echo %p%")(或%p我忘了哪个),但是p在此处未定义,因为新的系统调用会创建一个新的cmd调用。我也试过system("CD test")但CD仍然是相同的,并且在下一次系统调用中没有变化。 如何确保系统调用彼此使用'变量等?

1 个答案:

答案 0 :(得分:1)

根据定义,system的每次调用都有自己的环境。

在Linux和Mac上,您可以使用popen,MSVC也有类似的_popen

那就是说,雷米的评论是一个可行的选择。从您自己的代码调用system后,您仍然可以使用SetCurrentDirectory()开始卷曲。你的问题是连续的孩子不会继承彼此的环境;它们都继承自父进程(即您的C ++代码)。所以让那个父母正确。