Как отобразить информацию о процессах, использующих c во freebsd?

#c #operating-system #system-calls #freebsd

#c #операционная система #системные вызовы #freebsd

Вопрос:

Я хочу перечислить все процессы во FreeBSD, и у меня есть этот код ниже, который использует kvm, но он не знает, что такое KVM_NO_FILES, и я не могу понять, как это исправить. Если есть другой способ сделать это, пожалуйста, поделитесь.

 #include <stdio.h>
#include <kvm.h>
#include <limits.h>
#include <sys/param.h>
#include <sys/sysctl.h>

int
main(void)
{
    char errbuf[_POSIX2_LINE_MAX];
    kvm_t *kernel = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, errbuf);
    int nentries = 0;
    struct kinfo_proc *kinfo = kvm_getprocs(kernel, KERN_PROC_ALL, 0, sizeof(struct kinfo_proc), amp;nentries);
    int i;
    for (i = 0; i < nentries;   i) {
        printf("%sn", kinfo[i].p_comm);
    }
      return 0;
}
  

И я получаю эту ошибку:

 root@freebsd:- # cc -lkvm main.c 
main.c:11:53: error: use of undeclared identifier 'KVM_NO_FILES' 
kvm_t *kernel = kvm_openfiles(NULL. NULL. NULL, HVM_NO_FILES, errbuf): 
main.c:13:71: error: invalid application of 'sizeof' to an incomplete type 
'struct kinfo_proc' 
...= kvm_getprocs(kernel, HERN_PROC_ALL, 0, sizeof(struct kinfo_proc), amp;nen... 
/usr/include/kvM.h:72:8: note: forward declaration of 'struct kinfo_proc' 
struct kinfo_proc; 
main.c:18:29: error: subscript of pointer to incomplete type 'struct kinfo_proc' 
printf("Xsn", kinfolil.p_comm): 
/usr/include/kvM.h:72:8: note: forward declaration of 'struct kinfo_proc' 
struct kinfo_proc; 
3 errors generated.