From 3ae8e764889099513eba9a991e43074421e796ca Mon Sep 17 00:00:00 2001 From: Michael Krelin Date: Sun, 01 Aug 2004 20:02:28 +0000 Subject: fixed handling of 'ProcessName' on FreeBSD --- diff --git a/NEWS.xml b/NEWS.xml index bc0af31..2e35c11 100644 --- a/NEWS.xml +++ b/NEWS.xml @@ -2,6 +2,7 @@ do not act -e when doing -r + proper handling of ProcessName on FreeBSD now dudki sends arbitrary signals to the processes being monitored from the command line diff --git a/src/process.cc b/src/process.cc index 8a5b5d2..96c874f 100644 --- a/src/process.cc +++ b/src/process.cc @@ -249,17 +249,27 @@ void process::gather_proc_info() { continue; string cmd; ifstream ss(s,ios::in); - if(!ss) - continue; - getline(ss,cmd); - string::size_type op = cmd.find('('); - if(op==string::npos) - continue; - cmd.erase(0,op+1); - string::size_type cp = cmd.find(')'); - if(cp==string::npos) - continue; - cmd.erase(cp); + if(ss) { + getline(ss,cmd); + string::size_type op = cmd.find('('); + if(op==string::npos) + continue; + cmd.erase(0,op+1); + string::size_type cp = cmd.find(')'); + if(cp==string::npos) + continue; + cmd.erase(cp); + }else{ + r = snprintf(s,sizeof(s),"/proc/%d/status",*i); + if(r>=sizeof(s) || r<1) + continue; + ifstream ss(s,ios::in); + if(!ss) + continue; + ss >> cmd; + if(cmd.empty()) + continue; + } r = snprintf(s,sizeof(s),"/proc/%d/cmdline",*i); if(r>=sizeof(s) || r<1) continue; -- cgit v0.9.0.2