我有一个运行的C程序
execvp("grep", args);
其中args是一个数组{"grep", "test"}
(测试是我想要grep查找的单词)。
问题是grep的输出没有着色。在普通的bash shell中,grep以红色突出显示test
,但在我的程序输出中,它只是打印出像
this is a test
没有任何突出显示或颜色。
我也使用execvp执行一些其他命令,这些命令也会在bash shell中生成彩色输出,并且在输出中没有颜色。
有什么方法可以解决这个问题吗?我需要对stdout
做些什么?
答案 0 :(得分:2)
您需要为grep
提供正确的选项才能让它着色。最有可能的是,您的shell环境包括:
alias grep='grep --color=auto'
但execvp
对别名一无所知。
所以创建args数组:{"grep", "--color=auto", "test", 0}
并在execvp("grep", args);
调用中使用它。