In my understanding, fork() will copy all data to its child, only different is PID.
It is strange to me when we want to run a new program, we want a new resource, ex: new free memory space, new execution code ....etc.
why do we need to copy a totally different process then start (exec) our new program?