Долго рылся в хэлпах и исходниках в поисках возможности получить список процессов под freeBSD. В итоге нашёл два варианта первый модифицированный c forum.opennet.ru и один вытащил из исходника найденного на koders.com.
И не много подогнав под себя,
привожу код:
И не много подогнав под себя,
привожу код:
#include < stdio.h >
#include < string.h >
#include < err.h >
#include < kvm.h >
#include < sys/param.h >
#include < sys/sysctl.h >
#include < sys/user.h >
#include < sys/param.h >
#include < fcntl.h >
#include < stdlib.h >
#include < sysexits.h >
//##################################################################
static int get_pid_of_process(char *process_name, pid_t *pid_lst) {
static kvm_t *kd = NULL;
struct kinfo_proc *p;
int i, n_processes, processes_found;
processes_found = 0;
if ((kd = kvm_open("/dev/null", "/dev/null",
"/dev/null", O_RDONLY, "kvm_open")) == NULL) {
(void)errx(1, "%s", kvm_geterr(kd));
} else {
p = kvm_getprocs(kd, KERN_PROC_PROC, 0, &n_processes);
for (i = 0; i < n_processes; i++) {
if ((strncmp(process_name, p[i].ki_comm, COMMLEN+1) == 0)
&& (getpid() != (int)p[i].ki_pid)) {
if (pid_lst) {
pid_lst[processes_found] = (int)p[i].ki_pid;
}
processes_found++;
}
}
kvm_close(kd);
}
return processes_found;
}
Комментариев нет:
Отправить комментарий