KDK_SYSTEM...CTFEATURES(3)
💖 KDK_SYSTEM...CTFEATURES(3) 💖
okay bestie, so this is a page from the Library Functions Manual — yes, the KDK_SYSTEM...CTFEATURES(3) one — and it's all about a lil family of functions that go snooping around your machine to tell you what kind of system you're running on. grab a snack, we're getting into it 🍓
✨ NAME ✨
kdk_system_get_productFeatures — 获取操作系统产品标识码
(yes the description is in Chinese, no I'm not translating it, it's literally the name of the thing and it's staying exactly as-is 💅)
🎀 SYNOPSIS 🎀
#include <libkysysinfo.h>
extern unsigned int kdk_system_get_productFeatures();
Link with -lkysysinfo.
like, don't forget that link flag or nothing is gonna work, fr fr 😭
🌸 Detailed Description 🌸
So the whole point — the main character energy — of this interface is to obtain the operating system product identifier. that's it, that's the job. it walks up to your OS, taps it on the shoulder, and goes "hey bestie what are you" and comes back with a code. iconic behavior honestly 👑
💫 RETURN VALUE 💫
On success, it returns the identifier code of type int 🎉 and that code looks like one of these:
"0000-信息异常""0001-仅PC特性""0010-仅平板特性""0011-支持平板与PC特性"
On error, return 0.
⚠️ heads up bestie:0is the error value, so if you see a0come back, something went sideways, okay? don't go reading it as a product code, it's the "nope, didn't work" value 🙈
🌈 EXAMPLES 🌈
okay so this example is a whole buffet — it's technically demoing kdk_system_get_productFeatures's sibling functions, but it shows you the vibe of the whole libkysysinfo squad. here it is, verbatim, no edits, no cap 🫶
#include <libkysysinfo.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *res = kdk_system_get_architecture();
printf("架构:%s0, res);
free(res);
res = kdk_system_get_systemName();
printf("系统名称:%s0, res);
free(res);
res = kdk_system_get_version(0);
printf("系统简略版本:%s0, res);
free(res);
res = kdk_system_get_version(1);
printf("系统详细版本:%s0, res);
free(res);
res = kdk_system_get_kernelVersion();
printf("内核版本:%s0, res);
free(res);
res = kdk_system_get_serialNumber();
printf("序列号:%s0, res);
free(res);
int p;
int d;
int act = kdk_system_get_activationStatus(&p,&d);
printf("--------------0);
printf("激活状态码:%d0,act);
printf("激活状态:%s0, act == 1 ? "已激活" : act == 0 ? "未激活" : "已过期");
res = kdk_system_get_eUser();
printf("当前用户:%s0, res);
// free(res);
res = kdk_system_get_eUser_login_time();
printf("登录时间:%s0, res);
res = kdk_system_get_projectName();
printf("项目编号名:%s0, res);
free(res);
int zyj = kdk_system_is_zyj();
printf("专用机:%s0, zyj == 0 ? "非专用机":"专用机");
res = kdk_system_get_hostVirtType();
printf("虚拟机类型:%s0, res);
free(res);
res = kdk_system_get_hostCloudPlatform();
printf("云平台类型:%s0, res);
free(res);
version_t test = kdk_system_get_version_detaile( );
printf("test.os_version = %s0,test.os_version);
printf("test.update_version = %s0,test.update_version);
char** name = kdk_system_get_resolving_power();
// printf("name = %s0, name);
size_t count = 0;
while (name[count])
{
printf("No. %d %s0, count + 1, name[count]);
count ++;
}
kdk_resolving_freeall(name);
char *ver = kdk_system_get_systemCategory();
printf("系统硬件版本类别 = %s0, ver);
free(ver);
// ver = kdk_system_get_cloudPlatformType();
// printf("云平台类型 = %s0, ver);
// free(ver);
char **ud_time = kdk_system_get_startup_time();
count = 0;
while (ud_time[count])
{
printf("开机时间 = %s0, ud_time[count]);
count++;
}
kdk_resolving_freeall(ud_time);
ud_time = kdk_system_get_shutdown_time();
count = 0;
while (ud_time[count])
{
printf("关机时间 = %s0, ud_time[count]);
count++;
}
kdk_resolving_freeall(ud_time);
res = kdk_get_host_vendor();
printf("整机制造商 = %s0, res);
free(res);
res = kdk_get_host_product();
printf("整机型号 = %s0, res);
free(res);
res = kdk_get_host_serial();
printf("整机序列号 = %s0, res);
free(res);
res = kdk_system_get_buildTime();
printf("构建时间:%s0, res);
free(res);
res = kdk_system_get_hostName();
printf("主机名:%s0, res);
free(res);
printf("系统位数:%d0, kdk_system_get_word());
struct KPci *pci = kdk_hw_get_pci_info();
struct KPci *tmp = pci;
while (tmp)
{
printf("slot path : %s0, tmp->slot_path);
printf("class name :%s0, tmp->class_name);
printf("product name :%s0, tmp->product_name);
printf("rev :%02x0, tmp->rev);
printf("subsystem name :%s0, tmp->ss_name);
printf("driver user :%s0, tmp->driver_use);
printf("modules :");
for(int i = 0; i < tmp->module_count; i++)
{
printf("%s", tmp->modules[i]);
}
printf("0);
tmp = tmp->next;
}
kdk_hw_free_pci_info(pci);
res = kdk_system_get_appScene();
printf("应用场景:%s0, res);
free(res);
return 0;
}
not me noticing the // free(res); that got commented out on the kdk_system_get_eUser() result and the two other commented-out lines — they're commented out for a reason bestie, leave them exactly like that, do not "fix" them, i'm watching 👀
💜 CONFORMING TO 💜
These functions are as per the withdrawn POSIX.1e draft specification. (withdrawn! it said goodbye! but the functions are still here serving looks ✨)
The following functions are Linux extensions:
kdk_system_get_systemName()kdk_system_get_architecture()kdk_system_get_activationStatus()kdk_system_get_version()kdk_system_get_serialNumber()kdk_system_get_kernelVersion()kdk_system_get_eUser()kdk_system_get_eUser_login_time()kdk_system_get_projectName()kdk_system_get_projectSubName()kdk_system_get_hostVirtType()kdk_system_get_hostCloudPlatform()kdk_system_is_zyj()kdk_system_get_version_detaile()kdk_system_get_resolving_power()kdk_system_get_systemCategory()kdk_system_get_startup_time()kdk_system_get_shutdown_time()kdk_get_host_vendor()kdk_get_host_product()kdk_get_host_serial()kdk_system_get_hostName()kdk_system_get_word()kdk_system_get_buildTime()kdk_resolving_freeall()kdk_hw_get_pci_info()kdk_hw_free_pci_info()kdk_system_get_appScene()
🦋 SEE ALSO 🦋
go read these next, they're the whole friend group 🫶
kdk_system_get_systemName(3)kdk_system_get_architecture(3)kdk_system_get_version(3)kdk_system_get_activationStatus(3)kdk_system_get_serialNumber(3)kdk_system_get_kernelVersion(3)kdk_system_get_eUser(3)kdk_system_get_eUser_login_time(3)kdk_system_get_projectName(3)kdk_system_get_projectSubName(3)kdk_system_get_hostVirtType(3)kdk_system_get_hostCloudPlatform(3)kdk_system_is_zyj(3)kdk_system_get_version_detaile(3)kdk_system_get_resolving_power(3)kdk_system_get_systemCategory(3)kdk_system_get_startup_time(3)kdk_system_get_shutdown_time(3)kdk_get_host_vendor(3)kdk_get_host_product(3)kdk_get_host_serial(3)kdk_system_get_hostName(3)kdk_system_get_word(3)kdk_system_get_buildTime(3)kdk_resolving_freeall(3)kdk_hw_get_pci_info(3)kdk_hw_free_pci_info(3)kdk_system_get_appScene(3)
and that's the whole page bestie!! 💅 this one came out of the Linux Programmer's Manual, dated Tue Sep 19 2023 — so if you were wondering when this was written, there's your timestamp, no mystery, no cap 🌸 mwah, go read the SEE ALSOs, i believe in you 👑
📦 where this page comes from
- arch rolling: libkysdk-system 3.0.1.4-1 · LGPL-3.0-or-later AND LGPL-2.1-only OR LGPL-3.0-only AND LGPL-2.1-only WITH Qt-LGPL-exception-1.1 OR LGPL-3.0-only WITH Qt-LGPL-exception-1.1 AND MIT
- ubuntu resolute: libkysdk-system-dev 3.0.1.2-0ubuntu1 · LGPL-3.0-only
- ubuntu stonking: libkysdk-system-dev 3.0.1.3-0ubuntu1 · LGPL-3.0-or-later
- 💖 girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms