Я пишу код на C / C ++ для запуска команды оболочки и захвата вывода:
static const int BUFFER_SIZE=512;
// (...)
FILE* pipe;
char buffer[BUFFER_SIZE];
// (...)
if (!(pipe = popen(cmd.c_str(), "r"))) {
out("\nProblem executing command: " + cmd + "\n");
return 1;
}
while (!feof(pipe)) {
int read = fread(buffer, sizeof(char), sizeof buffer, pipe);
int pos = -1;
int i;
for (i = 0; i < strlen(buffer); i++) {
if (buffer[i] == '\n') {
pos = i;
}
}
// ... get a substring from buffer var from 0 to pos,
// and set a "reminder" var with pos+1 to end of string
}
Это работает с ошибкой: я вижу, что в конце буфера содержатся некоторые не-ascii-символыпутают все остальные операции, которые я выполняю со строкой впоследствии (подстрока, которую я упомянул в комментарии).
Вот пример того, что я вижу:
Поскольку я новичок в C / C ++, я хотел бы спросить совета о том, как я могу получить выходные данные процесса и передать их в другое место, разделив их при необходимости.Код может быть на C или C ++.