Diferença na chamada padrão "ls" e execvp "ls"

Diferença na chamada padrão "ls" e execvp "ls"

Chamei o comando "ls" usando a chamada do sistema execvp de dentro do arquivo ac. Mas parece haver uma ligeira diferença.

insira a descrição da imagem aqui

Os arquivos exe na chamada ls padrão são destacados em verde, mas não na minha própria chamada execvp ls. Estou esquecendo de algo?

Este é o trecho de código que está chamando ls.

else if (rc == 0) 
{ 
    // child (new process)
    printf("hello, I am child (pid:%d)\n", (int) getpid());
    char *myargs[2];
    myargs[0] = strdup("ls");
    // program: "wc" (word count)
    myargs[1] = NULL;//strdup("p3.c"); // argument: file to count
    //myargs[2] = NULL;
    // marks end of array
    execvp(myargs[0], myargs); // runs word count
    printf("this shouldn’t print out");
}

Responder1

lsno seu shell há um alias para ls --color=auto:

$ alias ls
alias ls='ls --color=auto'

Se você quiser a coloração na lssaída, use a --coloropção.

informação relacionada