A scenario where execl can be preferred above execv is when we already know the path and don't need an array to store the data. For e..g if the path is "/bin/ls" then we can simply use it using execl as: execl("/bin/ls","ls","-l",(char*)0) rather than using it in execv as: char *argv = {"ls","-l",NULL}; execv("/bin/ls",argv);
When using execl is easy to use and implemented but execv reqire data to store using array[ ] of some size.even though working is same I can still prefered execl over execv any time