NeiNeigh's blog

覚書のようなブログ.PC・アプリケーション・プログラミング・オーディオ・アニメ

C言語でプロセス自身のメモリ使用量を知るには?

いくつかの方法があったのでメモする.


  • getrusage()

このシステムコールを使えば,linuxならメモリ使用量を調べられる.
詳しくはこちらのサイトにある
http://goyoki.hatenablog.com/entry/2013/05/11/031202

  • /proc/[PID]/status

これも先ほどと同じサイトに詳しく載っている.
/procはプロセスやメモリーなどのLinuxシステム上のリソース関連情報を、あたかもファイルであるかのように配置した仮想的なファイル・システムである。/status内のVmSizeの項目に,キロバイト単位で記されている.
http://goyoki.hatenablog.com/entry/2013/05/11/031202

  • /proc/[PID]/stat

これはpsコマンドでも使われている./statusとの違いは,こちらの方がより詳しい情報が書かれており,これをもとにヒューマンフレンドリーな形式に直したものが/statusである.statの方はメモリ使用量の単位がバイトなので,こちらのほうがより詳細にわかる.
こちらのサイトに詳しく載ってる.
http://www.sukikamo.jp/users/norihiro/programming/20120219.html
が,私の環境ではコードをコピペしたらセグフォした.

char *items[50]

この部分が問題らしく,配列のサイズが足りていなかった.適宜インデックスを大きくすると良い.


ちょっと急いで書いたので,読みにくいかもしれないごめんなさい.でも,自分用メモだから良しとする.