Runing programs can spit core if they crashed. It will be picked up

by gdb and debug it with nice dialog.
Processes are now kept in list so pid/cmd can be easily tracked.
Rest...
This commit is contained in:
Sanel Zukan
2007-08-06 12:39:15 +00:00
parent 817e0cd918
commit a80b5dcb2a
11 changed files with 1066 additions and 13 deletions

View File

@ -24,11 +24,20 @@ struct EvokeClient {
edelib::String exec; // program name/path to run
};
typedef edelib::list<EvokeClient> ClientList;
typedef edelib::list<EvokeClient>::iterator ClientListIter;
struct EvokeProcess {
edelib::String cmd;
pid_t pid;
};
typedef edelib::list<EvokeClient> ClientList;
typedef edelib::list<EvokeClient>::iterator ClientListIter;
typedef edelib::list<edelib::String> StringList;
typedef edelib::list<edelib::String>::iterator StringListIter;
typedef edelib::list<EvokeProcess> ProcessList;
typedef edelib::list<EvokeProcess>::iterator ProcessListIter;
class Fl_Double_Window;
class EvokeService {
@ -44,7 +53,8 @@ class EvokeService {
Atom _ede_spawn;
Atom _ede_evoke_quit;
ClientList clients;
ClientList clients;
ProcessList processes;
public:
EvokeService();
@ -68,6 +78,12 @@ class EvokeService {
void register_top(Fl_Double_Window* win) { top_win = win; }
void unregister_top(void) { top_win = NULL; }
void register_process(const char* cmd, pid_t pid);
void unregister_process(pid_t pid);
bool find_and_unregister_process(pid_t pid, EvokeProcess& pc);
void service_watcher(int pid, int signum);
void quit_x11(void);
};