Why so difficult?
According to "man system":
system() executes a command specified in string by calling /bin/sh -c string, and returns after the command has been completed.
So if system() already will start "sh -c" for you, why start another
system("cp source dest");