c++通过调用system()来获取变量集

c++ get variable set by call to system()

本文关键字:获取 变量 调用 system c++      更新时间:2023-10-16

我正在编写一个程序,我决定对于输入/输出,最好允许自定义命令。我已经编写了一个配置文件,定义了一系列命令(只是echo等),并在程序中使用system()调用这些命令。问题是我需要从这些命令中获得输入。我试着使用"read ANSWER",然后使用getenv("ANSWER),但这返回了一个空字符串。最好的方法是什么?

由于您没有提供任何代码,我不得不发挥我的想象力。如果我弄错了,请告诉我。你正在做这样的事情:

system("command");

并且,您希望能够读取该命令生成的输出。如果我错了,请提供你在问题中使用的代码。

如果我是对的,那么,您希望使用popen。它打开一个C风格的I/O流。您可以指定用于读取或写入(但不能同时指定两者)。您想使用"r"进行阅读。完成后,使用pclose关闭流。

char buf[512];
FILE *cmd = popen("command", "r");
while (fgets(buf, sizeof(buf), cmd) != 0) {
    //...
}
pclose(cmd);