1 #include <kvm/util.h> 2 #include <kvm/kvm-cmd.h> 3 #include <kvm/builtin-list.h> 4 #include <kvm/kvm.h> 5 6 #include <stdio.h> 7 #include <string.h> 8 #include <signal.h> 9 #include <fcntl.h> 10 11 #define PROCESS_NAME "kvm" 12 13 static void print_guest(const char *name, int pid) 14 { 15 char proc_name[PATH_MAX]; 16 char comm[sizeof(PROCESS_NAME)]; 17 int fd; 18 19 sprintf(proc_name, "/proc/%d/comm", pid); 20 fd = open(proc_name, O_RDONLY); 21 if (fd <= 0) 22 goto cleanup; 23 if (read(fd, comm, sizeof(PROCESS_NAME)) == 0) 24 goto cleanup; 25 if (strncmp(comm, PROCESS_NAME, strlen(PROCESS_NAME))) 26 goto cleanup; 27 28 printf("%s (PID: %d)\n", name, pid); 29 30 return; 31 32 cleanup: 33 kvm__remove_pidfile(name); 34 } 35 36 int kvm_cmd_list(int argc, const char **argv, const char *prefix) 37 { 38 kvm__enumerate_instances(print_guest); 39 40 return 0; 41 } 42