#include <stdio.h>
#include <stdlib.h>
#include <systemd/sd-device.h>
int main() {
sd_device *device;
sd_device_enumerator *enumerator =NULL;
const char **subsystem =NULL;
// *subsystem = malloc(sizeof(char *));
*subsystem = malloc(500);
if (subsystem == NULL)
printf("ohh");
// Create a device enumerator
int r = sd_device_enumerator_new(&enumerator);
if (r< 0)
printf("unable to create instance");
printf("%d\n",r);
//sd_device_enumerator_scan(enumerator);
for (device = sd_device_enumerator_get_device_first(enumerator); device != NULL;
device = sd_device_enumerator_get_device_next(enumerator)) {
r = sd_device_get_subsystem(device, subsystem);
if (r < 0)
printf("error in subsystem");
printf(" %s\n", subsystem);
if (subsystem != NULL)
free((char *)subsystem); // free the previous subsystem name
}
}
编译上述代码会导致seg错误
gcc -o dev_enum test 2. c-lsystem用于编译 请帮