KDK_SYSTEM...ROJECTNAME(3)
💖 KDK_SYSTEM...ROJECTNAME(3) — Library Functions Manual 💖
okay bestie, sit down, hydrate, because we're about to read a whole Library Functions Manual page together and honestly? it's giving "system info buffet" 🍓 this one lives in the KDK_SYSTEM...ROJECTNAME(3) corner of the manual, and it's all about asking the OS politely who it is 💅
✨ NAME ✨
kdk_system_get_projectName — 获取操作系统项目编号名 (aka: go get the operating system project number name, bestie 🎀)
✨ SYNOPSIS ✨
#include <libkysysinfo.h>
extern char* kdk_system_get_projectName();
Link with -lkysysinfo.
🫶 not me reminding you to link with -lkysysinfo — if you forget, the linker WILL humble you, fr fr.
✨ Detailed Description ✨
The main function of the interface is to obtain the operating system item number name.
like. that's the whole gig. she gets the operating system item number name and she gets it well 👑
✨ RETURN VALUE ✨
- On success, returns the operating system item number name of type
char*. 🔥 - The returned string needs to be released by
free— yes bestie, you HAVE tofreeit, no cap, that's your memory and you gotta give it back 💀 - On error, return
NULL.
😭 if you get NULL back, something went sideways. handle it, don't just print it and pretend you didn't see it.
✨ EXAMPLES ✨
okay this example is a whole tour of the library, not just our girl kdk_system_get_projectName — she's in there though, look for the 项目编号名 line 🌸 here's the exact code, character for character, because I do not play with y'all's copy-paste:
#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;
}
🙈 notice how almost every string gets afree(res)and our girlkdk_system_get_projectName()is right there in the middle doing exactly that? she's not special, she's just correct 💅 the ones that don't get freed are commented out or belong to thekdk_resolving_freeall()family — copy the example, don't freelance, iykyk.
✨ CONFORMING TO ✨
These functions are as per the withdrawn POSIX.1e draft specification. ⭐
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_projectSubName()kdk_system_get_productFeatures()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()
💀 "withdrawn POSIX.1e draft specification" is a real sentence that real people wrote and it's iconic in a haunted way, don't @ me.
✨ SEE ALSO ✨
go read these next bestie, 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_projectSubName(3)kdk_system_get_productFeatures(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 page, bestie 🎀 this one came from the Linux Programmer's Manual, dated Tue Sep 19 2023, filed under KDK_SYSTEM...ROJECTNAME(3) — go free() your strings and stay hydrated 💖✨
📦 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