我正在编写程序,我决定输入/输出,最好允许自定义命令。我编写了一个配置文件并定义了一系列命令(只是echo等),并使用system()在程序中调用它们。问题是我需要从这些命令获得输入。我尝试使用“读取ANSWER”然后使用getenv(“ANSWER”),但这会返回一个空字符串。执行此操作的最佳方法是什么?
答案 0 :(得分:2)
由于你没有提供任何代码,我必须运用我的想象力。如果我弄错了,请告诉我。你正在做这样的事情:
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);