version 1.7, 2004/12/29 19:40:36 |
version 1.8, 2005/02/11 17:17:45 |
|
|
|
|
int main(int, char **); |
int main(int, char **); |
void usage(void); |
void usage(void); |
int killact(struct kinfo_proc2 *); |
int killact(struct kinfo_proc2 *, int); |
int grepact(struct kinfo_proc2 *); |
int grepact(struct kinfo_proc2 *, int); |
void makelist(struct listhead *, enum listtype, char *); |
void makelist(struct listhead *, enum listtype, char *); |
|
|
extern char *__progname; |
extern char *__progname; |
|
|
extern int optind; |
extern int optind; |
char buf[_POSIX2_LINE_MAX], *mstr, **pargv, *p, *q; |
char buf[_POSIX2_LINE_MAX], *mstr, **pargv, *p, *q; |
int i, j, ch, bestidx, rv, criteria; |
int i, j, ch, bestidx, rv, criteria; |
int (*action)(struct kinfo_proc2 *); |
int (*action)(struct kinfo_proc2 *, int); |
struct kinfo_proc2 *kp; |
struct kinfo_proc2 *kp; |
struct list *li; |
struct list *li; |
u_int32_t bestsec, bestusec; |
u_int32_t bestsec, bestusec; |
|
|
/* |
/* |
* Take the appropriate action for each matched process, if any. |
* Take the appropriate action for each matched process, if any. |
*/ |
*/ |
for (i = 0, rv = STATUS_NOMATCH, kp = plist; i < nproc; i++, kp++) { |
rv = STATUS_NOMATCH; |
|
for (i = 0, j = 0, kp = plist; i < nproc; i++, kp++) { |
if ((kp->p_flag & P_SYSTEM) != 0 || kp->p_pid == mypid) |
if ((kp->p_flag & P_SYSTEM) != 0 || kp->p_pid == mypid) |
continue; |
continue; |
if (selected[i]) { |
if (selected[i]) { |
|
|
} else if (!inverse) |
} else if (!inverse) |
continue; |
continue; |
|
|
if ((*action)(kp) == -1) |
if ((*action)(kp, j++) == -1) |
rv = STATUS_ERROR; |
rv = STATUS_ERROR; |
else if (rv != STATUS_ERROR) |
else if (rv != STATUS_ERROR) |
rv = STATUS_MATCH; |
rv = STATUS_MATCH; |
} |
} |
|
if (pgrep) |
|
putchar('\n'); |
|
|
exit(rv); |
exit(rv); |
} |
} |
|
|
} |
} |
|
|
int |
int |
killact(struct kinfo_proc2 *kp) |
killact(struct kinfo_proc2 *kp, int dummy) |
{ |
{ |
|
|
if (kill(kp->p_pid, signum) == -1 && errno != ESRCH) { |
if (kill(kp->p_pid, signum) == -1 && errno != ESRCH) { |
|
|
} |
} |
|
|
int |
int |
grepact(struct kinfo_proc2 *kp) |
grepact(struct kinfo_proc2 *kp, int printdelim) |
{ |
{ |
char **argv; |
char **argv; |
|
|
|
if (printdelim) |
|
fputs(delim, stdout); |
if (longfmt && matchargs) { |
if (longfmt && matchargs) { |
if ((argv = kvm_getargv2(kd, kp, 0)) == NULL) |
if ((argv = kvm_getargv2(kd, kp, 0)) == NULL) |
return (-1); |
return (-1); |
|
|
else |
else |
printf("%d", (int)kp->p_pid); |
printf("%d", (int)kp->p_pid); |
|
|
printf("%s", delim); |
|
return (0); |
return (0); |
} |
} |
|
|