2015-12-15 114 views
-1

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

我已经做了这样的:

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

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

我想在同一过程中“送”另一个命令。我怎样才能做到这一点?

+0

你是说你你做一些动作在控制台,然后程序结束,但你希望它继续开展更多的命令? – MikeS159

+0

什么是“终端”?结果是什么”?什么是“其他命令”? –

+0

Right @ Mike159。 – Maik

回答

-1

我觉得之前fclose(fp)使用r2

fputs(r2.c_str(),fp) 
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); 
} 
+0

不是,它应该停留在一个过程中。 示例。 当R将=“dir” 它将显示正确的路径。 下一个R可能是=“cd ..” 但它不会影响下一个命令......希望能够理解:$ – Maik

+0

那么你是在谈论你在调用程序时输入的命令行参数,还是在你之后输入的命令行参数该计划已经开始。你可能想重新提出你的问题,并包含更多的代码。 – MikeS159