diff options
| author | dacctal <120422854+dacctal@users.noreply.github.com> | 2026-01-21 23:56:39 -0500 |
|---|---|---|
| committer | dacctal <120422854+dacctal@users.noreply.github.com> | 2026-01-21 23:56:39 -0500 |
| commit | 8926f839720471cc86fd4f7c6371d63b8f71b91d (patch) | |
| tree | c14523954085f7b6c428a488f81bfb645dcd2c83 /src/cmd_out.cc | |
| parent | 8fc3b1f6cd1062e15c0aed60a110fb91143cd801 (diff) | |
initial commit
Diffstat (limited to 'src/cmd_out.cc')
| -rw-r--r-- | src/cmd_out.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/cmd_out.cc b/src/cmd_out.cc new file mode 100644 index 0000000..a855add --- /dev/null +++ b/src/cmd_out.cc @@ -0,0 +1,18 @@ +#include <cstdio> +#include <memory> +#include <stdexcept> +#include <string> +#include <array> + +std::string cmd_out(const char* cmd) { + std::array<char, 128> buffer; + std::string result; + std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd, "r"), pclose); + if (!pipe) { + throw std::runtime_error("popen() failed!"); + } + while (fgets(buffer.data(), static_cast<int>(buffer.size()), pipe.get()) != nullptr) { + result += buffer.data(); + } + return result; +} |
