Долго рылся в хэлпах и исходниках в поисках возможности получить список процессов под 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; }