Следующая функция принимает массив указателей на символы, например: arr [0]: ls arr [1]: -l arr [2]: -a arr [3]: / etc arr [4]: NULL / *Так как execvp ожидает NULL в конце * /
// function call is runCmd(arr);
, определение функции ниже:
void runCmd(char *arr[]){
pid_t child_pid,tpid;
int child_status;
child_pid = fork();
if(child_pid == 0){
/* The child process executes the exec*/
execvp(arr[0],arr);
/*if it returns it must have failed */
fflush(stdout);
printf("Unknown Command \n");
exit(0);
}
else {
/* let the parent wait for the child */
do{
tpid = wait(&child_status);
}while(tpid != child_pid);
}
}
После выполнения я получаю сообщение -
ls: cannot access /etc
: No such file or directory