2011-08-26 60 views
0

我需要能夠執行一些shell命令,例如移動到正確的目錄,我有一些需要解碼的文件,然後使用另一個命令解碼它們。我讀了一些關於使用popen的東西,但我並沒有真正理解如何使用它來執行多個命令。在C++中使用popen執行shell命令

任何指針將不勝感激:)

感謝

FILE *pf; 
char command[150]; 
char data[512]; 

// Execute a process listing 
sprintf(command, "cd"); 
pf = _popen(command,"r"); 

sprintf(command, "cd Test_copy"); 
pf = _popen(command,"r"); */ 

sprintf(command, "java -jar Tool.jar -b x.fit x.csv"); 
pf = _popen(command,"r"); 

if(!pf){ 
    fprintf(stderr, "Could not open pipe for output.\n"); 
    return; 
} 

// Grab data from process execution 
fgets(data, 512 , pf); 

// Print grabbed data to the screen. 
fprintf(stdout, "-%s-\n",data); 

if (_pclose(pf) != 0) 
    fprintf(stderr," Error: Failed to close command stream \n"); 
+0

一個簡要的例子,你正在做什麼將是有益的。對於超過1個命令,只需根據需要多次調用popen即可。你可能會發現http://pstreams.sourceforge.net/很有用。 – mloskot

回答

0

使用ShellExecute用文件(默認應用程序等開放)來播放。使用system來運行shell命令。

+0

我試過用這個 - > res = ShellExecute(NULL,L「open」,L「C:\\ WINDOWS \\ system32 \\ cmd.exe」,L「java -jar Tool.jar -b test.fit test。 csv「,L」C:\\ Test_Copy2「,SW_SHOWNORMAL);它打開命令提示符但不執行命令! – Yousra

+0

@Yousra:你用'system'試過了嗎? – Jacob

+0

我試過了,但我不認爲我做得對,因爲它只是打開另一個命令提示符!你能告訴我你怎麼做?謝謝 – Yousra