1. #ifdef WIN32
  2. #include <Windows.h>
  3. #else
  4. #include <stdio.h>
  5. #include <unistd.h>
  6. #endif
  7. #include <assert.h>
  8. std::string getCurrentAppPath()
  9. {
  10. #ifdef WIN32
  11. char path[MAX_PATH + 1] = {0};
  12. if (GetModuleFileName(NULL, path, MAX_PATH) != 0)
  13. return std::string(path);
  14. #else
  15. char path[256] = {0};
  16. char filepath[256] = {0};
  17. char cmd[256] = {0};
  18. FILE* fp = NULL;
  19. // 设置进程所在proc路径
  20. sprintf(filepath, "/proc/%d", getpid());
  21. // 将当前路径设为进程路径
  22. if(chdir(filepath) != -1)
  23. {
  24. //指定待执行的shell 命令
  25. snprintf(cmd, 256, "ls -l | grep exe | awk '{print $10}'");
  26. if((fp = popen(cmd,"r")) == NULL)
  27. {
  28. return std::string();
  29. }
  30. //读取shell命令执行结果到字符串path中
  31. if (fgets(path, sizeof(path)/sizeof(path[0]), fp) == NULL)
  32. {
  33. pclose(fp);
  34. return std::string();
  35. }
  36. //popen开启的fd必须要pclose关闭
  37. pclose(fp);
  38. return std::string(path);
  39. }
  40. #endif
  41. return std::string();
  42. }
  43. std::size_t getCpuCount()
  44. {
  45. #ifdef WIN32
  46. SYSTEM_INFO sysInfo;
  47. GetSystemInfo(&sysInfo);
  48. return sysInfo.dwNumberOfProcessors;
  49. #else
  50. long cpu_num = sysconf(_SC_NPROCESSORS_ONLN);
  51. if (cpu_num == -1)
  52. {
  53. assert(false);
  54. return 0;
  55. }
  56. // 看两者是否相等
  57. assert(cpu_num == sysconf(_SC_NPROCESSORS_CONF));
  58. return cpu_num;
  59. #endif
  60. }

windows和linux下获取当前程序路径以及cpu数的更多相关文章

  1. 在Windows及Linux下获取毫秒级运行时间的方法

    在Windows下获取毫秒级运行时间的方法 头文件:<Windows.h> 函数原型: /*获取时钟频率,保存在结构LARGE_INTEGER中***/ WINBASEAPI BOOL W ...

  2. Linux下获取当前程序的绝对路径

    在Linux开发应用时,我们常常需要在程序中获取当前程序绝对路径,我们可以通过readlink读取符号链接/proc/self/exe进行获取,这个符号链接代表当前程序,它的源路径就是当前程序的绝对路 ...

  3. 怎样在windows下和linux下获取文件(如exe文件)的具体信息和属性

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/xmt1139057136/article/details/25620685 程序猿都非常懒.你懂的! ...

  4. windows和linux下查看java安装路径

    windows下查看版本:(默认安装路径安装就不需要去配环境变量了) java -version windows下查看安装路径: java -verbose Linux下安装版本查看方式和window ...

  5. 【C#遗补】获取应用程序路径之System.IO.Directory.GetCurrentDirectory和System.Windows.Forms.Application.StartupPath的区别

    原文:[C#遗补]获取应用程序路径之System.IO.Directory.GetCurrentDirectory和System.Windows.Forms.Application.StartupPa ...

  6. php windows与linux下的路径区别

    php windows与linux下的路径区别windows用的是"\",linux用的是"/"这一点要特别清楚,, ps:在PHP windows也可以用/表 ...

  7. Windows与Linux下文件操作监控的实现

    一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场 ...

  8. 谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH PKG_CONFIG_PATH

    谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH  PKG_CONFIG_PATH 转载自:http://blog.chinaunix.net/xmlrpc.ph ...

  9. paip兼容windows与linux的java类根目录路径的方法

    paip兼容windows与linux的java类根目录路径的方法 1.只有 pathx.class.getResource("")或者pathx.class.getResourc ...

随机推荐

  1. wampserver 2.2装好后80端口未被占用,却打不开localhost

    在windows server 2003中装好wampserver2.2后打不开localhost,点击服务全部启动(颜色是橙色)也是打不开,我解决的原因是:安装mysql中sevice中的安装测试服 ...

  2. sublime 控制台输入解决方案

    下面的配置是通过konsole控制台自带的参数解决了sublime不能输入的问题,这种方式适合任何一种语言 { "cmd": ["konsole"," ...

  3. UI原则之-拼车

    1.简洁------------一目了然,简洁明了 2.易用------------操作方便 3.直观.快速-------快速定位到所需信息 4.友好-------网络延时.超时.等待 5.易懂--- ...

  4. Office OpenXML-Excel(一)

    原文 http://www.cnblogs.com/changminglong/articles/2840004.html 适用于 2007 Microsoft Office 套件,Microsoft ...

  5. C语言的本质(17)——回调函数

    如果函数的参数是一个函数指针,我们可以通过这个函数指针传递一个函数的地址给另外一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数(Callback Function).回调函数不是由 ...

  6. TCP的那些事(转载)

    (转载本站文章请注明作者和出处 酷 壳 – CoolShell.cn ,请勿用于任何商业用途) TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身 ...

  7. linux学习方法之六

    相信不少想学习linux的新手们正愁不知道看什么linux学习教程好,下面小编给大家收集和整理了几点比较重要的教程,供大家学习,如需想学习更多的话,可到wdlinux学堂寻找更多教程. 1.linux ...

  8. TX enqueue DRM

  9. Unable to resolve target 'android-XX'的问题解决

    1.问题现象(Unable to resolve target 'android-XX') 将低版本的代码导入eclipse时,常遇到这样的问题:Unable to resolve target 'a ...

  10. LSH算法原理

    原始链接--http://www.jiahenglu.net/NSFC/LSH.html LSH(Location Sensitive Hash),即位置敏感哈希函数.与一般哈希函数不同的是位置敏感性 ...