#include "shell.hpp" // list all running/suspended jobs void shell::c_ps (std::string args) { if ( args == "-A" || args == "-e" ) { std::vector jobs = js_.list (); std::vector :: iterator begin = jobs.begin (); std::vector :: iterator end = jobs.end (); std::vector :: iterator iter; for ( iter = begin; iter != end; iter++ ) { saga::job::job j = js_.get_job (*iter); saga::job::description d = j.get_description (); std::string e = "?"; if ( d.attribute_exists (saga::job::attributes::description_executable) ) { e = d.get_attribute (saga::job::attributes::description_executable); } std::cout << *iter << " \t " << e << "\n"; } std::cout << "all\n"; } else { // list only known shell jobs // get list of jobs std::vector ids = jobs_.list (); // iterate list for ( std::size_t i = 0; i < ids.size (); i++ ) { int pid = ids[i]; // get details from process table std::string jobid = jobs_.get_jobid (pid); std::string command = jobs_.get_command (pid); saga::job::job job = jobs_.get_job (pid); // get job state saga::job::state state = job.get_state (); // show what we found std::cout << " [" << pid << "] \t " << jobid << " \t " << " [" << state_to_string (state) << "] \t " << command << std::endl; // purge old (== final) entries if ( state == saga::job::Done || state == saga::job::Failed || state == saga::job::Canceled || state == saga::job::Unknown ) { jobs_.del (pid); } } } return; }