#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("%dn",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(" %sn", subsystem);
if (subsystem != NULL)
free((char *)subsystem); // free the previous subsystem name
}
}
compiling above code results in seg fault
gcc -o dev_enum test2.c -lsystemd is used to compile
Please help