execv()が新しいプロセスをマッピングした後の最初のmmap呼び出しですか?

execv()が新しいプロセスをマッピングした後の最初のmmap呼び出しですか?

次のbashスクリプトがあるとしましょう。

#!/usr/bin/bash

ls *.py

これで実行するstrace -f ./test.shと、出力に次のものが表示されます。

[pid 25916] execve("/usr/bin/ls", ["ls", "test2.py", "test.py"], [/* 28 vars */]) = 0
[pid 25916] brk(NULL)                   = 0x1c7a000
[pid 25916] mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbb616ae000
[pid 25916] access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
[pid 25916] open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3

brk()この部分から出てきたことがわかります。この回答しかし、通貨はどうですかmmap()

これはプロセスイメージのマッピング(一部)ですか?それとも、呼び出し時にbrk()新しいサブプロセスのイメージがすでに置き換えられていますか?

ベストアンサー1

おすすめ記事