%EA%B0%80%20%EC%83%88%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%A5%BC%20%EB%A7%A4%ED%95%91%ED%95%9C%20%ED%9B%84%20%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20mmap%20%ED%98%B8%EC%B6%9C%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음 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()
새 하위 프로세스의 이미지가 이미 교체되었습니까?