Linux Shell C programming

I'm trying to code a simple linux shell in C. However I have some doubts.
Per example, if I want to execute the following command: ls -al|more
The line execl("/bin/ls", "/bin/ls", "-al|more", (char *) 0); returns an error.