diff --git a/src/lib/dstring.cpp b/src/lib/dstring.cpp index 21d5441..1349d9d 100644 --- a/src/lib/dstring.cpp +++ b/src/lib/dstring.cpp @@ -49,28 +49,6 @@ std::vector DString::splitStr(const std::string &str, char c) return splitChars(str.c_str(), c); } -std::vector DString::splitVectorChars(const std::vector &content, size_t length, char c) -{ - std::vector ret; - size_t pos = 0; - bool hasChar = true; - for (size_t i = 0; i < length; i++) { - if (content[i] == c && i > pos && hasChar) { - std::string str; - for (size_t j = pos; j <= i; j++) { - str += std::string(1, content[j]); - } - ret.push_back(str); - pos = i + 1; - hasChar = false; - } else { - hasChar = true; - } - } - - return ret; -} - bool DString::startWith(const char *chars, const char *prefix) { if (!chars || !prefix) { diff --git a/src/lib/dstring.h b/src/lib/dstring.h index ea8072f..63a4b03 100644 --- a/src/lib/dstring.h +++ b/src/lib/dstring.h @@ -24,7 +24,6 @@ public: // 字符串拆分 static std::vector splitChars(const char *cs, char c); static std::vector splitStr(const std::string &str, char c); - static std::vector splitVectorChars(const std::vector &content, size_t length, char c); // 字符串前缀判断 static bool startWith(const char *chars, const char *prefix); static bool startWith(const std::string &str, const std::string &prefix); diff --git a/src/lib/process.cpp b/src/lib/process.cpp index b922fdb..a01e9bf 100644 --- a/src/lib/process.cpp +++ b/src/lib/process.cpp @@ -8,6 +8,7 @@ #include "dfile.h" #include +#include #include #include @@ -154,18 +155,19 @@ std::string Process::getFile(const std::string &name) return "/proc/" + std::to_string(m_pid) + "/" + name; } -// /proc is not real file system +// This funciton only can used to read `environ` and `cmdline` std::vector Process::readFile(std::string fileName) { std::vector ret; - std::FILE *fp = std::fopen(fileName.c_str(), "r"); - if (!fp) - return ret; + std::ifstream fs(fileName); + if (!fs.is_open()) { + return ret; + } - std::vector content(FILECONTENLEN); - std::size_t len = std::fread(&content[0], 1, FILECONTENLEN, fp); - std::fclose(fp); + std::string tmp; + while (std::getline(fs, tmp, '\0')) { + ret.push_back(tmp); + } - ret = DString::splitVectorChars(content, len, '\0'); return ret; }