windows和linux下获取当前程序路径以及cpu数

来源:互联网 发布:windows内核编程 编辑:程序博客网 时间:2024/05/24 01:52
#ifdef WIN32#include <Windows.h>#else#include <stdio.h>#include <unistd.h>#endif#include <assert.h>std::string getCurrentAppPath(){#ifdef WIN32char path[MAX_PATH + 1] = {0};if (GetModuleFileName(NULL, path, MAX_PATH) != 0)return std::string(path);#elsechar path[256] = {0};char filepath[256] = {0};char cmd[256] = {0};FILE* fp = NULL;// 设置进程所在proc路径sprintf(filepath, "/proc/%d", getpid());// 将当前路径设为进程路径if(chdir(filepath) != -1){//指定待执行的shell 命令snprintf(cmd, 256, "ls -l | grep exe | awk '{print $10}'");if((fp = popen(cmd,"r")) == NULL){return std::string();}//读取shell命令执行结果到字符串path中if (fgets(path, sizeof(path)/sizeof(path[0]), fp) == NULL){pclose(fp);return std::string();}//popen开启的fd必须要pclose关闭pclose(fp);return std::string(path);}#endifreturn std::string();}std::size_t getCpuCount(){#ifdef WIN32SYSTEM_INFO sysInfo;GetSystemInfo(&sysInfo);return sysInfo.dwNumberOfProcessors;#elselong cpu_num = sysconf(_SC_NPROCESSORS_ONLN);if (cpu_num == -1){    assert(false);    return 0;}// 看两者是否相等        assert(cpu_num == sysconf(_SC_NPROCESSORS_CONF));        return cpu_num;#endif}

原创粉丝点击