我想编写一个能够打印出系统属性的程序。这可能吗?
如果是这样,使用C / C ++,如何学习系统特性/属性?
例如,以下属性:
hardware :
Memory 3.8 gib
ubuntu :
release 10.10 ( maveric )
system status:
available disk space 51.1 gib
user name :
xxx
processor :
intel ... duo cpu e4600
该平台是Linux。
答案 0 :(得分:3)
在Linux中您可以简单地使用该功能:
int uname(struct utsname *buf);
包含标题
#include <sys/utsname.h>
它将系统信息作为结构的一部分返回:
struct utsname
{
char sysname[]; /* Operating system name (e.g., "Linux") */
char nodename[]; /* Name within "some implementation-defined network" */
char release[]; /* OS release (e.g., "2.6.28") */
char version[]; /* OS version */
char machine[]; /* Hardware identifier */
#ifdef _GNU_SOURCE
char domainname[]; /* NIS or YP domain name */
#endif
};
好吧,如果不是全部,至少它会给你一些system properties
。应该有其他api可以显示您需要的所有信息。您需要查看文档和&amp;为此搜索一下。
修改强>
哦,好吧,我刚从互联网上撕下这一个。该程序将帮助您以编程方式运行Linux命令。
char* GetSystemOutput(char* cmd)
{
int buff_size = 32;
char* buff = new char[buff_size];
char* ret = NULL;
string str = "";
int fd[2];
int old_fd[3];
pipe(fd);
old_fd[0] = dup(STDIN_FILENO);
old_fd[1] = dup(STDOUT_FILENO);
old_fd[2] = dup(STDERR_FILENO);
int pid = fork();
switch(pid)
{
case 0:
close(fd[0]);
close(STDOUT_FILENO);
close(STDERR_FILENO);
dup2(fd[1], STDOUT_FILENO);
dup2(fd[1], STDERR_FILENO);
system(cmd);
//execlp((const char*)cmd, cmd,0);
close (fd[1]);
exit(0);
break;
case -1:
cerr << "GetSystemOutput/fork() error\n" << endl;
exit(1);
default:
close(fd[1]);
dup2(fd[0], STDIN_FILENO);
int rc = 1;
while (rc > 0)
{
rc = read(fd[0], buff, buff_size);
str.append(buff, rc);
//memset(buff, 0, buff_size);
}
ret = new char [strlen((char*)str.c_str())];
strcpy(ret, (char*)str.c_str());
waitpid(pid, NULL, 0);
close(fd[0]);
}
dup2(STDIN_FILENO, old_fd[0]);
dup2(STDOUT_FILENO, old_fd[1]);
dup2(STDERR_FILENO, old_fd[2]);
return ret;
}
Api用法:GetSystemOutput("/usr/bin/lsb_release -a")
按照命令:
cat /proc/cpuinfo = tells you cpu info
cat /proc/meminfo = tells you memory info
lspci = tells you hardware that is attached (at least if the kernel recognizes it)
cat /proc/ide/hda/* = tells you info of your first ide hard-drive.
答案 1 :(得分:2)
在/ proc目录中查看。有很多东西可能被视为系统属性,但您很快就能确定您感兴趣的属性。
cat /proc/somedir/somefile
是您要用于安全浏览/ proc的命令。
答案 2 :(得分:0)
每个操作系统都有一个允许您与之通信的API。
可悲的是,这不是统一的,你需要阅读搜索目标操作系统的API。
通过API,您通常可以获得所需的大部分信息。