如何查询系统功能/特性?

|                                                                                                                       
已邀请:
        在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
   };
好吧,如果不是全部的话,它至少会给您带来3英镑的收益。应该有其他可用的api可以显示您需要的所有信息。您将需要查看文档并进行一些搜索。 编辑: 哦,好吧,我刚刚从互联网上删除了这个。该程序将帮助您以编程方式运行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. 
    
        在/ proc目录中四处看看。有很多东西可能被认为是系统属性,但是您很快就能确定您对哪些属性感兴趣。
cat /proc/somedir/somefile
是您要用来安全浏览/ proc的命令。     
        每个操作系统都有一个API,可让您与其通信。 遗憾的是,这并不是统一的,您需要阅读搜索以查找目标操作系统的API。 通常,通过API,您可以获得所需的大多数信息。     

要回复问题请先登录注册