C++ popen() не удается перехватить выходные данные команд конвейера bash в Ubuntu 22.04 при работе в Debian 11.Linux

Ответить Пред. темаСлед. тема
Anonymous
 C++ popen() не удается перехватить выходные данные команд конвейера bash в Ubuntu 22.04 при работе в Debian 11.

Сообщение Anonymous »

Я создаю простой инструмент мониторинга процессов, который должен выполнять и фиксировать выходные данные команд bash с помощью C++. Самое странное: те же команды прекрасно работают в терминале, но не работают в C++.
Код:

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 

std::string exec_command(const char* cmd) {
std::array buffer;
std::string result;
std::unique_ptr pipe(popen(cmd, "r"), pclose);

if (!pipe) {
throw std::runtime_error("popen() failed!");
}

while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) {
result += buffer.data();
}

return result;
}

int main() {
// Simple reproducible example
const char* test_cmd = "ps aux | grep bash";
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79240200/c-popen-fails-to-capture-output-from-bash-pipeline-commands-on-ubuntu-22-04[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»