문제

I am attempting to use fork/execvp to execute another program from within my C program. It is working, however before ls outputs the contents of my directory I am getting several hundred lines of:

ls: cannot access : No such file or directory

Followed by the correct listing of the files in the directory. I am passing to execvp:

char **argv = {"ls", "/home/school/"};
char *command = "ls";

For some reason when I use the path "/home/school" it cannot find the directory. Does anyone know why that is happening and why ls is saying it cannot access?

PID  = fork();
i = 0;
if(i == numArgs) { doneFlag = 1; }
    if (PID == 0){//child process
        execvp(command, argv);//needs error checking
    }
    else if(PID > 0){
        wait(PID, 0, 0);//wait for child process to finish execution
    }
    else if(PID == -1){
        printf("ERROR:\n");
        switch (errno){
            case EAGAIN:
         printf("Cannot fork process: System Process Limit Reached\n");
         case ENOMEM:
         printf("Cannot fork process: Out of memory\n");
        }
        return 1;
    }
도움이 되었습니까?

해결책

The execv and execvp functions provide an array of pointers to null-terminated strings that represent the argument list available to the new program.

The first argument should point to the file name associated with the file being executed.

The array of pointers must be terminated by a NULL pointer. Append a 0 or NULL at the end of argv*.

다른 팁

The char** argument passed in execvp() must be terminated by NULL.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top