我必须获取进程的内存使用信息。我知道它是可用的,/proc/${pid}/statm
但是否有一个系统功能来获取它。解析文件似乎效率低下。
您误以为解析文件似乎效率低下,因为您将其断章取义。您可能已经知道,下面的信息/proc
仅在您请求时“创建”,并且不会在发生更改时更新。因此,您不仅必须解析它,内核还必须将其生成为文本。
将几个字节直接读入 long 当然比调用atoi()
字符串更有效。但是您必须将其视为必须执行系统调用的上下文的一部分。为读取某些文件内容(或调用内核可能提供的某些二进制 API)而执行的所有额外代码使进行字符串转换所需的时间相形见绌。
内核进程比普通程序更频繁地需要这种数据,没有必须进行系统调用来获取这些数据的开销,它们可以直接访问这种数据。