I understand that i am supposed to use chdir() but I just need an explanation as to why calling cd shell command through system or execvp() from a child process would not work? Thanks!!
Because chdir
only modifies the environment of the current process. It can't touch the environment of the parent.
See also the link posted by tripleee.