diff --git a/src/apex/apex_options.cpp b/src/apex/apex_options.cpp index 465bbeb6..10c48a69 100644 --- a/src/apex/apex_options.cpp +++ b/src/apex/apex_options.cpp @@ -19,7 +19,9 @@ #include #include #include +#include #include "utils.hpp" +#include "proc_read.h" namespace apex { @@ -136,6 +138,10 @@ namespace apex std::cout << #name << " : " << options.member_variable() << std::endl; FOREACH_APEX_STRING_OPTION(apex_macro) #undef apex_macro + std::unique_ptr tmpstr = proc_data_reader::get_command_line(); + if (tmpstr.length() > 0) { + std::cout << tmpstr << std::endl; + } return; } } diff --git a/src/apex/proc_read.cpp b/src/apex/proc_read.cpp index 32ab03be..801a722f 100644 --- a/src/apex/proc_read.cpp +++ b/src/apex/proc_read.cpp @@ -694,6 +694,21 @@ double msr_current_power_high(void) { } #endif +std::unique_ptr proc_data_reader::get_command_line(void) { + std::string line; + std::fstream myfile ("/proc/self/cmdline"); + std::stringstream ss; + if (myfile.is_open()) + { + while ( getline (myfile,line) ) + { + ss << line << '\n'; + } + myfile.close(); + } else { + // it wasn't there, so return nothing. + } + return std::move(ss.str()); } #endif // APEX_HAVE_PROC diff --git a/src/apex/proc_read.h b/src/apex/proc_read.h index b4ec5bbe..7ec00a1c 100644 --- a/src/apex/proc_read.h +++ b/src/apex/proc_read.h @@ -18,6 +18,7 @@ #include #include #include +#include #include "pthread_wrapper.hpp" #include "apex_options.hpp" @@ -59,6 +60,7 @@ class proc_data_reader { stop_reading(); delete worker_thread; } + static std::unique_ptr get_command_line(void); }; class ProcData {