From 25a65c6cfdd80d3be896e281ce66a899eb6da214 Mon Sep 17 00:00:00 2001 From: marcelb Date: Tue, 27 Jun 2023 10:38:27 +0200 Subject: [PATCH] After make lib, and testing --- .vscode/settings.json | 5 +++++ README.md | 4 ++++ lib/exec.hpp | 15 +++++++++++++++ src/exec.cpp | 21 +++++++++++++++++++++ test/bash_cmd.sh | 3 +++ test/compile.sh | 1 + test/test.cpp | 15 +++++++++++++++ test/test.o | Bin 0 -> 24640 bytes 8 files changed, 64 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 README.md create mode 100644 lib/exec.hpp create mode 100644 src/exec.cpp create mode 100644 test/bash_cmd.sh create mode 100644 test/compile.sh create mode 100644 test/test.cpp create mode 100755 test/test.o diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d8cb326 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "string": "cpp" + } +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..6cef392 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# Library for executing bash commands with captured output. + + +The output of the bash command is saved in a C++ string. \ No newline at end of file diff --git a/lib/exec.hpp b/lib/exec.hpp new file mode 100644 index 0000000..1be6b58 --- /dev/null +++ b/lib/exec.hpp @@ -0,0 +1,15 @@ +#ifndef _TRM_ +#define _TRM_ + +#include +// #include +// #include +// #include +#include + +using namespace std; + +string exec(const string command); + + +#endif \ No newline at end of file diff --git a/src/exec.cpp b/src/exec.cpp new file mode 100644 index 0000000..7203d18 --- /dev/null +++ b/src/exec.cpp @@ -0,0 +1,21 @@ +#include "../lib/exec.hpp" + +/** + * Funkcija za pozivanje bash naredbi s odgovorom +*/ + +string exec(const string command) { + FILE *fds; + char cstr[200]; + fds = popen(command.c_str(), "r"); + if (fds == NULL) { + throw string("[ERROR] Cant pipe stream in execute command "); + } + + string cppstr; + while (fgets(cstr, sizeof(cstr), fds) != NULL) { + cppstr += cstr; + } + pclose(fds); + return cppstr; +} diff --git a/test/bash_cmd.sh b/test/bash_cmd.sh new file mode 100644 index 0000000..69a97f4 --- /dev/null +++ b/test/bash_cmd.sh @@ -0,0 +1,3 @@ +echo "WARNING: key file (/etc/bind/rndc.key) exists, but using default configuration file (/etc/bind/rndc.conf)"; +sleep 4s; +echo "zone reload up-to-date"; \ No newline at end of file diff --git a/test/compile.sh b/test/compile.sh new file mode 100644 index 0000000..9a28838 --- /dev/null +++ b/test/compile.sh @@ -0,0 +1 @@ +g++ test.cpp ../src/* -o test.o \ No newline at end of file diff --git a/test/test.cpp b/test/test.cpp new file mode 100644 index 0000000..d7aea88 --- /dev/null +++ b/test/test.cpp @@ -0,0 +1,15 @@ +#include + +#include "../lib/exec.hpp" + +using namespace std; + +int main() { + + string out = exec("bash bash_cmd.sh"); + + cout << out << endl; + + + return 0; +} \ No newline at end of file diff --git a/test/test.o b/test/test.o new file mode 100755 index 0000000000000000000000000000000000000000..11fb42f9f0f2348a0e47f6b9056240ca1f2de665 GIT binary patch literal 24640 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