作成した C プログラムがあり、そのメモリ マップを作成しようとしています。
プロセスの環境の開始アドレスと終了アドレス (仮想メモリ内) を画面に出力するにはどうすればよいですか。
プログラムは常に Linux で実行されますが、それが違いを生むかどうかはわかりませんが、移植性は必要ありません。
できれば開始と終了の 16 進数のアドレスを教えてくれるものを探しています。
作成した C プログラムがあり、そのメモリ マップを作成しようとしています。
プロセスの環境の開始アドレスと終了アドレス (仮想メモリ内) を画面に出力するにはどうすればよいですか。
プログラムは常に Linux で実行されますが、それが違いを生むかどうかはわかりませんが、移植性は必要ありません。
できれば開始と終了の 16 進数のアドレスを教えてくれるものを探しています。
あなたの要件に従って、PIDがわかっている場合、特定のプロセスのメモリマップを取得できると思います。詳細については、コマンド「pmap」を使用してくださいhttp://linux.die.net/man/1/pmap。
&あなたのプログラムでそれを印刷したい場合は、関数getpid()の助けを借りて pid を取得してみてください。次に、system() 呼び出しを使用して pmap コマンドを実行します。
プロセスのプロセス識別子の値である/proc/[PID]/maps
ファイルの内容を簡単に出力できます (この値が何であるかを調べるために呼び出します)。[PID]
getpid()