从/procd怎样获取进程的运行时间
时间: 2024-11-29 11:38:13 浏览: 26
在Linux中,如果你想获取一个进程的运行时间,最常用的方法不是直接读取`/proc`目录下的内容,而是通过系统调用`getrusage`或者使用`ps`命令结合`-o etime`选项。下面是两个例子:
1. **使用`getrusage`系统调用**:
- 对于当前进程,你可以使用以下C语言代码片段获取进程的CPU时间和用户时间(两者之和即运行时间):
```c
#include <sys/resource.h>
struct rusage ru;
getrusage(RUSAGE_SELF, &ru);
double user_time = ru.ru_utime.tv_sec + (ru.ru_utime.tv_usec / 1000.0);
double sys_time = ru.ru_stime.tv_sec + (ru.ru_stime.tv_usec / 1000.0);
double total_time = user_time + sys_time; // 运行时间总和
```
2. **使用`ps`命令**:
- 在终端中输入`ps -p <PID> -o etime`,其中`<PID>`是你要查询的进程ID,可以获取到进程的执行时间,通常是以小时、分钟和秒的形式显示(比如 "0days 00:05:34")。
如果你想要查看整个进程树(包括所有子进程)的运行时间,`htop` 或 `pgrep -P <PID> --forest --fulltree` 等工具会更方便。
阅读全文