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()새 하위 프로세스의 이미지가 이미 교체되었습니까?

관련 정보