Какова цель получения этой информации?
Если вы пытаетесь обнаружить некоторые функции или свойства системы (например, поддерживает ли она какой-либо системный вызов или имеет какую-то библиотеку), вместо того, чтобы полагаться на вывод lsb_release, вы должны либо:
- попытаться использовать данные функции и завершиться неудачно (например, dlopen для библиотек, syscall (2) для системных вызовов и т. Д.)
- сделать его частью вашей проверки ./configure, если применимо (стандартный способ FOSS для автоматического распознавания системных свойств / свойств)
Обратите внимание, что первый способ, описанный выше, применяется, даже если ваше программное обеспечение работает только в двоичном формате.
Некоторые примеры кода:
dl = dlopen(module_path, RTLD_LAZY);
if (!dl) {
fprintf(stderr, "Failed to open module: %s\n", module_path);
return;
}
funcptr = dlsym(dl, module_function);
if (!funcptr) {
fprintf(stderr, "Failed to find symbol: %s\n", module_function);
return;
}
funcptr();
dlclose(dl);
Вы можете даже изящно протестировать поддержку кодов операций ЦП, см., Например, http://neugierig.org/software/chromium/notes/2009/12/flash-lahf.html, http://code.google.com/p/chromium/issues/detail?id=29789