Выполнять команды оболочки, используя popen в c ++ - PullRequest
0 голосов
/ 26 августа 2011

Мне нужно иметь возможность выполнять некоторые команды оболочки, такие как перемещение в нужный каталог, где у меня есть несколько файлов, которые мне нужно декодировать, а затем декодировать их с помощью другой команды. Я прочитал кое-что об использовании popen, но я действительно не понимал, как использовать его для выполнения нескольких команд.

Любые указатели будут с благодарностью:)

Спасибо

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");

Ответы [ 2 ]

0 голосов
/ 10 апреля 2013

Нет, не надо. Это все равно что использовать кувалду, чтобы постучать в дверь. Кроме того, это «зло»: http://www.cplusplus.com/forum/articles/11153/

0 голосов
/ 26 августа 2011

Используйте ShellExecute для воспроизведения с файлами (открыть с помощью приложения по умолчанию и т. Д.).Используйте system для запуска команд оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...