aboutsummaryrefslogtreecommitdiff
path: root/libbb/find_pid_by_name.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2006-11-05 00:43:51 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2006-11-05 00:43:51 +0000
commit459e4d6cf77940977a064edab60c7162731554fb (patch)
tree5deb7d2b82c280440761cceb4281738867d5631a /libbb/find_pid_by_name.c
parentfa07680091d20f9da1f8fa2c145dd92b5d62ae09 (diff)
downloadbusybox-w32-459e4d6cf77940977a064edab60c7162731554fb.tar.gz
busybox-w32-459e4d6cf77940977a064edab60c7162731554fb.tar.bz2
busybox-w32-459e4d6cf77940977a064edab60c7162731554fb.zip
replace /proc scanning code by more versatile one.
Use it where appropriate. Stop scanning /etc/passwd *for every process*!!! (uid->username) top: reduce memory usage - we won't save unneeded fields from /proc info anymore. Downside: ~+250 bytes of code
Diffstat (limited to 'libbb/find_pid_by_name.c')
-rw-r--r--libbb/find_pid_by_name.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libbb/find_pid_by_name.c b/libbb/find_pid_by_name.c
index 05f7f968f..e98616940 100644
--- a/libbb/find_pid_by_name.c
+++ b/libbb/find_pid_by_name.c
@@ -23,11 +23,11 @@ pid_t* find_pid_by_name(const char* procName)
23{ 23{
24 pid_t* pidList; 24 pid_t* pidList;
25 int i = 0; 25 int i = 0;
26 procps_status_t* p; 26 procps_status_t* p = NULL;
27 27
28 pidList = xmalloc(sizeof(*pidList)); 28 pidList = xmalloc(sizeof(*pidList));
29 while ((p = procps_scan(0)) != 0) { 29 while ((p = procps_scan(p, PSSCAN_PID|PSSCAN_COMM))) {
30 if (strncmp(p->short_cmd, procName, COMM_LEN-1) == 0) { 30 if (strncmp(p->comm, procName, sizeof(p->comm)-1) == 0) {
31 pidList = xrealloc(pidList, sizeof(*pidList) * (i+2)); 31 pidList = xrealloc(pidList, sizeof(*pidList) * (i+2));
32 pidList[i++] = p->pid; 32 pidList[i++] = p->pid;
33 } 33 }