9 #include "wvprociter.h"
11 #include "wvfileutils.h"
12 #include <sys/types.h>
15 WvProcIter::WvProcIter() :
16 dir_iter(
"/proc", false, true)
19 fprintf(stderr,
"WARNING: Can't open /proc: is it mounted?\n");
20 if (access(
"/proc/1/.", F_OK) != 0)
21 fprintf(stderr,
"WARNING: Can't find /proc/1: is /proc mounted?\n");
24 WvProcIter::~WvProcIter()
28 bool WvProcIter::isok()
const
30 return dir_iter.isok();
33 void WvProcIter::rewind()
38 bool WvProcIter::next()
44 if (!wvstring_to_num(dir_iter->name, proc_ent.pid))
47 proc_ent.exe = wvreadlink(
WvString(
"%s/exe", dir_iter->fullname));
49 proc_ent.cmdline.zap();
50 WvFile cmdline_file(
WvString(
"%s/cmdline", dir_iter->fullname), O_RDONLY);
51 while (cmdline_file.isok())
53 const char *line = cmdline_file.getline(0,
'\0');
58 proc_ent.cmdline.append(line_str);
67 bool wvkillall(WvStringParm name,
int sig)
71 for (i.rewind(); i.next(); )
73 if (!i->cmdline.isempty()
74 && !!*i->cmdline.first()