2011-08-26 216 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