Я хочу перенаправить вывод от выполнения команды в терминале на строку в c ++. Я не хочу, чтобы вывод команды вообще появлялся в терминале, потому что я использую отображение ncurses. Есть ли способ, которым я могу это сделать?
Я использую терминал Linux.
Я подумал о перенаправлении во временный файл, а затем чтение содержимого файла. Но я бы предпочел не вводить файлы tmp. чтобы уточнить, я хочу быть в состоянии сделать следующее:
- echo "hello world" через execve
- перенаправить вывод из терминала в std :: string, так что на самом деле он не отображается в терминале на этом этапе.
- использовать функцию printw в ncurses для вывода вывода команды в окно ncurses
В настоящее время я ищу возможные реализации с использованием особенности из термина ios .h и, возможно, dup2
мой код выглядит следующим образом:
std::string containerForOutput;
// some method which redicects execve into containerForOutput here
char cmd[100];
strcpy(cmd, "/usr/bin/");
strcat(cmd, argv[0]);
// execute the command using execve, but
// will not output to terminal after command is given
// and will instead store it in the string containerForOutput
int result = execve(cmd, argv, environ);
perror("Fallback Shell");
Использование потока строк не работает.