默认“ls”和 execvp“ls”调用的区别

默认“ls”和 execvp“ls”调用的区别

我使用 execvp 系统调用从 ac 文件内部调用了“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

lsls --color=auto在你的 shell 中是:的别名

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

ls如果您希望输出中有颜色,请使用该--color选项。

相关内容