如果 program 运行 with exec 没有颜色输出

No colour output if program run with exec

我有一个运行的 C 程序

execvp("grep", args);

其中 args 是一个数组 {"grep", "test"}(测试是我想让 grep 找到的词)。 问题是 grep 的输出没有颜色。在正常的 bash shell 中,grep 以红色突出显示 test,但在我的程序输出中,它只是打印出如下行 this is a test 没有突出显示或任何类型的颜色。

我还使用 execvp 执行一些其他命令,这些命令也会在 bash shell 中产生彩色输出,但在我的输出中没有颜色。

有什么办法可以解决这个问题吗?我需要做些什么才能 stdout?

您需要向 grep 提供正确的选项才能使其着色。您的 shell 环境很可能包括:

alias grep='grep --color=auto'

但是execvp对别名一无所知。

因此创建 args 数组:{"grep", "--color=auto", "test", 0} 并在您的 execvp("grep", args); 调用中使用它。