⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 platinfo.c

📁 获取unix系统进程信息的功能
💻 C
字号:
#ifdef __cplusplus
extern "C" {
#endif

#include <stdio.h>
#include "platinfo.h"
#include "common.h"
#include "utils.h"

#ifdef WIN32
#include <Windows.h>
#endif


#ifdef WIN32
int GetOSVer(char *buf, unsigned long buflen, char *errbuf)
{
    OSVERSIONINFO VersionInfo;

    memset(buf, 0, buflen);
    memset(&VersionInfo, 0, sizeof(OSVERSIONINFO));
    VersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    if(!GetVersionEx(&VersionInfo))
    {
        strcpy(errbuf, "2:GetVersionEx() error");
        return -1;
    }

    if (VersionInfo.dwPlatformId == VER_PLATFORM_WIN32s)
    {
        strcpy(buf, "Windows 3.1");
    }
    else if (VersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
    {
        if (VersionInfo.dwMinorVersion == 0)
        {
            strcpy(buf, "Windows 95");
        }
        else if (VersionInfo.dwMinorVersion == 10) 
        {
            strcpy(buf, "Windows 98");
        }
        else if (VersionInfo.dwMinorVersion == 90) 
        {
            strcpy(buf, "Windows Me");
        }
        else
        {
            strcpy(errbuf, "1:Unknown OS Version");
            return -1;
        }
    }
    else if (VersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
    {
        if (VersionInfo.dwMajorVersion == 3) 
        {
            if (strlen(VersionInfo.szCSDVersion))
            {
                sprintf(buf, "Windows NT 3.51,%s", VersionInfo.szCSDVersion);
            }
            else
            {
                strcpy(buf, "Windows NT 3.51");
            }
        }
        else if (VersionInfo.dwMajorVersion == 4)
        {
            if (strlen(VersionInfo.szCSDVersion))
            {
                sprintf(buf, "Windows NT 4.0,%s", VersionInfo.szCSDVersion);
            }
            else
            {
                strcpy(buf, "Windows NT 4.0");
            }
        }
        else if (VersionInfo.dwMajorVersion == 5)
        {
            if (VersionInfo.dwMinorVersion == 0)
            {
                if (strlen(VersionInfo.szCSDVersion))
                {
                    sprintf(buf, "Windows 2000,%s", VersionInfo.szCSDVersion);
                }
                else
                {
                    strcpy(buf, "Windows 2000");
                }
            }
            else if (VersionInfo.dwMinorVersion == 1) 
            {
                if (strlen(VersionInfo.szCSDVersion))
                {
                    sprintf(buf, "Windows XP,%s", VersionInfo.szCSDVersion);
                }
                else
                {
                    strcpy(buf, "Windows XP");
                }
            }
            else if (VersionInfo.dwMinorVersion == 2) 
            {
                if (strlen(VersionInfo.szCSDVersion))
                {
                    sprintf(buf, "Windows Server 2003,%s", VersionInfo.szCSDVersion);
                }
                else
                {
                    strcpy(buf, "Windows Server 2003");
                }
            }
            else
            {
                strcpy(errbuf, "1:Unknown OS Version");
                return -1;
            }
        }
        else
        {
            strcpy(errbuf, "1:Unknown OS Version");
            return -1;
        }
    }
    else
    {
        strcpy(errbuf, "1:Unknown OS Version");
        return -1;
    }
    
    return 0;
}
#elif defined(LINUX)
int GetOSVer(char *buf, unsigned long buflen, char *errbuf)
{
    char szCmd[MIN_BUF_LEN];
    int ret;

    memset(buf, 0, buflen);
    strcpy(szCmd, "uname -s -r|awk -F- '{printf \"%s\",$1}'");
    ret = my_system(szCmd, DEFAULT_COMMAND_TIMEOUT, buf, buflen);
    if (ret != 0)
    {
        strcpy(errbuf, "2:my_system() error");
        return -1;
    }

    if (strlen(buf) == 0)
    {
        strcpy(errbuf, "2:uname error");
        return -1;
    }

    return 0;
}
#elif defined(SOLARIS)
int GetOSVer(char *buf, unsigned long buflen, char *errbuf)
{
    char szCmd[MIN_BUF_LEN];
    int ret;

    memset(buf, 0, buflen);
    strcpy(szCmd, "uname -s -r");
    ret = my_system(szCmd, DEFAULT_COMMAND_TIMEOUT, buf, buflen);
    if (ret != 0)
    {
        strcpy(errbuf, "2:my_system() error");
        return -1;
    }

    if (strlen(buf) == 0)
    {
        strcpy(errbuf, "2:uname error");
        return -1;
    }

    return 0;
}
#elif defined(AIX)
int GetOSVer(char *buf, unsigned long buflen, char *errbuf)
{
    char szCmd[MIN_BUF_LEN];
    int ret;

    memset(buf, 0, buflen);
    strcpy(szCmd, "uname -s -r -v|awk '{printf \"%s %s.%s\",$1,$3,$2}'");
    ret = my_system(szCmd, DEFAULT_COMMAND_TIMEOUT, buf, buflen);
    if (ret != 0)
    {
        strcpy(errbuf, "2:my_system() error");
        return -1;
    }

    if (strlen(buf) == 0)
    {
        strcpy(errbuf, "2:uname error");
        return -1;
    }

    return 0;
}
#endif

int GetSysHostName(char *buf, unsigned long buflen, char *errbuf)
{
    char szCmd[MIN_BUF_LEN];
    int ret;
    
    memset(buf, 0, buflen);
#ifdef WIN32
    ret = GetComputerName(buf, &buflen);
    if (!ret)
    {
        strcpy(errbuf, "2:GetComputerName() error");
        return -1;
    }
#else
    strcpy(szCmd, "hostname");
    ret = my_system(szCmd, DEFAULT_COMMAND_TIMEOUT, buf, buflen);
    if (ret != 0)
    {
        strcpy(errbuf, "2:my_system() error");
        return -1;
    }

    if (strlen(buf) == 0)
    {
        strcpy(errbuf, "2:hostname error");
        return -1;
    }
#endif
    return 0;
}

#ifdef __cplusplus
}
#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -