do i have to extract ls out from the entire string to use execlp/execvp/execl/... command?

I think so, and you would also need to construct an array (of the form: "ls", "-a", NULL) to pass the arguments.

is there a way to run the command without extracting it?

You could use system() instead.

Originally Posted by Bjarne Stroustrup (2000-10-14)

I get maybe two dozen requests for help with some sort of programming or design problem every day. Most have more sense than to send me hundreds of lines of code. If they do, I ask them to find the smallest example that exhibits the problem and send me that. Mostly, they then find the error themselves. "Finding the smallest program that demonstrates the error" is a powerful debugging tool.