как получить значение из символа [] - PullRequest
0 голосов
/ 19 декабря 2011

однако, спасибо всем, кто мне помогает. Я хочу получить значение VmRSS из / proc / pid / status, ниже приведен код

int main()
{ 
    const int PROCESS_MEMORY_FILE_LEN = 500;
    FILE *file;
    std::string path("/proc/4378/status");
    //path += boost::lexical_cast<std::string>( pid );
    //path += "/status";
    if(!(file = fopen(path.c_str(),"r")))
    {
        std::cout <<"open " << path<<"is failed " << std::endl;
        return float(-1);
    }
    char fileBuffer[PROCESS_MEMORY_FILE_LEN];
    memset(fileBuffer, 0, PROCESS_MEMORY_FILE_LEN);
    if(fread(fileBuffer, 1, PROCESS_MEMORY_FILE_LEN - 1, file) != (PROCESS_MEMORY_FILE_LEN - 1))
    {
        std::cout <<"fread /proc/pid/status is failed"<< std::endl;
        return float(-1);
    }

    fclose(file);

    unsigned long long memoryUsage = 0;
    int a = sscanf(fileBuffer,"VmRSS: %llu", &memoryUsage);
    std::cout << a << std::endl;
    std::cout << memoryUsage << std::endl;
}

наконец, спасибо

1 Ответ

0 голосов
/ 19 декабря 2011

На основе ваших комментариев: Чтобы найти VmRSS в вашем массиве символов, используйте алгоритмы C ++ в сочетании с библиотекой C ++ string .Тогда вы получите позицию VmRSS, и все, что вам нужно сделать, это получить желаемый результат.С небольшим знанием структуры этих записей, это должно быть легкой задачей.

В дополнение к этому, может быть лучше использовать fstream для чтения непосредственно в строку.

...