Для функции Execv необходим полный путь к команде, которую вы должны выполнить. Таким образом, вместо указания "ls"
вы должны узнать, где находится ls в вашей системе:
$ which ls
, вероятно, он будет находиться в папке / bin. Так что вы должны дать "/bin/ls"
exe c. Также любой аргумент ls должен быть другим членом массива. Поэтому вместо использования
char * ls_args[] = { "ls" , "ls -l", NULL};
используйте
char * ls_args[] = { "/bin/ls" , "-l", NULL};