当 execve("/bin/ls", args, NULL) 被调用时，操作系统会用 /bin/ls 这个可执行程序的代码和数据完全替换当前子进程的地址空间（包括代码段、数据段、堆和栈）。子进程的 PID 不变，但执行的内容变成了 ls 程序。ls 程序运行后会列出当前目录下的文件和文件夹，然后 ls 执行完毕后子进程自动退出。

需要注意的是，execve 如果调用成功就不会返回，因为原来的程序代码已经被完全替换了。只有在调用失败时（比如找不到 /bin/ls 文件），execve 才会返回 -1，此时程序进入错误处理，调用 err() 报错。