デフォルトの「ls」と execvp の「ls」呼び出しの違い

デフォルトの「ls」と execvp の「ls」呼び出しの違い

ac ファイル内から execvp システム コールを使用して「ls」コマンドを呼び出しました。ただし、若干の違いがあるようです。

ここに画像の説明を入力してください

デフォルトの ls 呼び出しの exe ファイルは緑色で強調表示されますが、独自の execvp ls 呼び出しでは強調表示されません。何か見落としているのでしょうか?

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

答え1

lsシェル内のは、次のエイリアスですls --color=auto:

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

ls出力に色を付けたい場合は、--colorオプションを使用します。

関連情報