假设我有以下 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()
,新子进程的映像已经被替换?