zoukankan      html  css  js  c++  java
  • windows和linux下获取当前程序路径以及cpu数

    [cpp] view plaincopy
     
    1. #ifdef WIN32  
    2. #include <Windows.h>  
    3. #else  
    4. #include <stdio.h>  
    5. #include <unistd.h>  
    6. #endif  
    7.   
    8. #include <assert.h>  
    9.   
    10.     std::string getCurrentAppPath()  
    11.     {  
    12. #ifdef WIN32  
    13.         char path[MAX_PATH + 1] = {0};  
    14.         if (GetModuleFileName(NULL, path, MAX_PATH) != 0)  
    15.             return std::string(path);  
    16. #else  
    17.         char path[256] = {0};  
    18.         char filepath[256] = {0};  
    19.         char cmd[256] = {0};  
    20.         FILE* fp = NULL;  
    21.   
    22.         // 设置进程所在proc路径  
    23.         sprintf(filepath, "/proc/%d", getpid());  
    24.         // 将当前路径设为进程路径  
    25.         if(chdir(filepath) != -1)  
    26.         {  
    27.             //指定待执行的shell 命令  
    28.             snprintf(cmd, 256, "ls -l | grep exe | awk '{print $10}'");  
    29.             if((fp = popen(cmd,"r")) == NULL)  
    30.             {  
    31.                 return std::string();  
    32.             }  
    33.             //读取shell命令执行结果到字符串path中  
    34.             if (fgets(path, sizeof(path)/sizeof(path[0]), fp) == NULL)  
    35.             {  
    36.                 pclose(fp);  
    37.                 return std::string();  
    38.             }  
    39.   
    40.             //popen开启的fd必须要pclose关闭  
    41.             pclose(fp);  
    42.             return std::string(path);  
    43.         }  
    44. #endif  
    45.         return std::string();  
    46.     }  
    47.   
    48.     std::size_t getCpuCount()  
    49.     {  
    50. #ifdef WIN32  
    51.         SYSTEM_INFO sysInfo;  
    52.         GetSystemInfo(&sysInfo);  
    53.         return sysInfo.dwNumberOfProcessors;  
    54. #else  
    55.         long cpu_num = sysconf(_SC_NPROCESSORS_ONLN);  
    56.         if (cpu_num == -1)  
    57.         {  
    58.             assert(false);  
    59.             return 0;  
    60.         }  
    61.         // 看两者是否相等  
    62.         assert(cpu_num == sysconf(_SC_NPROCESSORS_CONF));  
    63.         return cpu_num;  
    64. #endif  
    65.     }  
  • 相关阅读:
    使用.NET Core创建Windows服务(二)
    使用.NET Core创建Windows服务(一)
    在.NET Core中使用DispatchProxy“实现”非公开的接口
    ASP.NET Core 3.0中使用动态控制器路由
    从零开始实现ASP.NET Core MVC的插件式开发(五)
    微博大数据即席查询(OLAP)引擎实践
    微博数仓数据延时优化方案
    团队工作建议
    GitBook安装部署实操手册
    Wiki.js安装部署实操手册
  • 原文地址:https://www.cnblogs.com/lidabo/p/4245437.html
Copyright © 2011-2022 走看看