私は明日試験のために勉強しています、そして私はこの質問に出くわしました:
straceを使用して実行可能ファイルを実行すると、標準のClibに関して次のシステムコールが発生します。
- open( "/ lib / libc.so.6"、 "O_RDONLY")= 3
- mmap(NULL、36803630、PROT_READ | PROT_EXEC、MAP_PRIVATE | MAP_DENYWRITE、3、0)= 0x7f312ab35000
- mmap(0x7f312aeae000、20480、PROT_READ | PROT_WRITE、MAP_PRIVATE | MAP_FIXED | MAP_DENYWRITE、3、0x179000)= 0x7f312aeae000
問題は、mmapの最初のシステムコールがPROT_READ | PROT_EXECを使用し、2番目のシステムコールがPROT_READ|PROT_WRITEを使用する理由です。
各mmap呼び出しの後に何が起こるかを詳しく説明してください。プロセスがlibc(書き込みアクセス)を変更する必要がある理由がわかりません。