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