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]
この部分が問題らしく,配列のサイズが足りていなかった.適宜インデックスを大きくすると良い.
ちょっと急いで書いたので,読みにくいかもしれないごめんなさい.でも,自分用メモだから良しとする.