diff --git a/tools/process_dump/dfx_process.cpp b/tools/process_dump/dfx_process.cpp index 54f912ab584df985a85454dfe511db4d0ecb8e67..67405188418b8311ef20903b2b9d926472b6ceb2 100644 --- a/tools/process_dump/dfx_process.cpp +++ b/tools/process_dump/dfx_process.cpp @@ -198,14 +198,15 @@ bool GetProcessInfo(pid_t tid, unsigned long long &startTime) std::string DfxProcess::GetProcessLifeCycle(pid_t pid) { - struct sysinfo si; - sysinfo(&si); + struct timespec ts; + (void)clock_gettime(CLOCK_BOOTTIME, &ts); + uint64_t sysUpTime = static_cast(ts.tv_sec + static_cast(ts.tv_nsec != 0 ? 1L : 0L)); unsigned long long startTime = 0; if (GetProcessInfo(pid, startTime)) { if (sysconf(_SC_CLK_TCK) == -1) { return ""; } - uint64_t upTime = si.uptime - startTime / static_cast(sysconf(_SC_CLK_TCK)); + uint64_t upTime = sysUpTime - startTime / static_cast(sysconf(_SC_CLK_TCK)); return std::to_string(upTime) + "s"; } return "";