C ++执行命令行并获取Result。

时间:2015-12-15 11:58:06

标签: c++ cmd command line popen

我的情况需要一些帮助。我想执行终端并获得结果。到目前为止我已经完成了,但是我想在获得结果后做一些其他的命令。我的问题是,每当我执行一个命令时,控制台重新启动,我不知道如何在一个活跃的prozess中写。

我这样做了:

...
boolean result = GLU.gluProject((float) (x), (float) y, (float) (z), modelView, projection, viewport, screenCoords);
if (result && screenCoords.get(2) < 0) {
    return new int[] { (int) screenCoords.get(0), (int) screenCoords.get(1)};
}
return null;

我想&#34;发送&#34;同一进程中的另一个命令。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

假设我理解你的问题和评论。听起来您希望程序在循环中运行,直到用户选择关闭它。你会想要这样的东西:

bool keepProgramOpen = true;
public void main()
{       
    while(keepProgramOpen)
    {
        printf("Choose and option\n");
        printf("Option 1: press 1\n");
        printf("Option 2: press 2\n"); //etc
        char result = getchar();

        switch result
        {
            //code to select which option was picked
            case 1:
                fileFunction();
                break;
            case 2:
                someOtherFunction();
                break;
            case 3:
                closeProgram(); //set keepProgramOpen false in here to end program
                break;
            //etc
        }
    }
}

fileFunction()
{
   FILE *fp = popen(r.c_str(),"r");
   char buf[2560];

   while (fgets(buf, 2560, fp))
   {
       s->SendLine(buf);
   }
   fclose(fp);
}

答案 1 :(得分:-1)

我认为在fclose(fp)之前使用r2作为

fputs(r2.c_str(),fp)