While reading up on fork(), I read one source that said that essentially the current process was duplicated. The wording made me think that, essentially, a duplicate of the current program was created in memory. I would think that would mean if I have one main process and fork(), that the child process is an exact image of the parent, but in a different memory location, which would mean every time a process forks, it'll take twice the memory it did before since it has to duplicate itself.
Is this right? If so, I would think fork() would be a function to avoid when something else can be done instead, such as pthreads().
Does fork() create an entire image of the parent thread, taking up as much in memory and resources?