Unterschied zwischen dem Standardaufruf „ls“ und dem execvp-Aufruf „ls“

Unterschied zwischen dem Standardaufruf „ls“ und dem execvp-Aufruf „ls“

Ich habe den Befehl „ls“ mithilfe des execvp-Systemaufrufs aus der ac-Datei heraus aufgerufen. Aber es scheint einen kleinen Unterschied zu geben.

Bildbeschreibung hier eingeben

Die EXE-Dateien im Standard-LS-Aufruf werden grün hervorgehoben, aber nicht in meinem eigenen EXEVP-LS-Aufruf. Übersehe ich etwas?

Dies ist der Codeabschnitt, der ls aufruft.

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");
}

Antwort1

lsin Ihrer Shell befindet sich ein Alias ​​für ls --color=auto:

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

Wenn Sie die Farbgebung in der lsAusgabe wünschen, verwenden Sie die --colorOption.

verwandte Informationen