2015-12-15 111 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