如果程序使用 exec 运行,则没有颜色输出
Posted
技术标签:
【中文标题】如果程序使用 exec 运行,则没有颜色输出【英文标题】:No colour output if program run with exec 【发布时间】:2015-05-09 09:41:26 【问题描述】:我有一个可以运行的 C 程序
execvp("grep", args);
其中 args 是一个数组 "grep", "test"
(test 是我希望 grep 找到的单词)。
问题是 grep 的输出没有着色。在普通的 bash shell 中,grep 以红色突出显示 test
,但在我的程序输出中,它只打印如下行
this is a test
没有任何突出显示或任何颜色。
我还使用 execvp 来执行一些其他命令,这些命令也会在 bash shell 中产生彩色输出,并且在我的输出中没有颜色。
有没有办法解决这个问题?我需要对stdout
做些什么?
【问题讨论】:
【参考方案1】:您需要为grep
提供正确的选项才能使其着色。您的 shell 环境很可能包括:
alias grep='grep --color=auto'
但是execvp
对别名一无所知。
所以创建 args 数组:"grep", "--color=auto", "test", 0
并在您的 execvp("grep", args);
调用中使用它。
【讨论】:
以上是关于如果程序使用 exec 运行,则没有颜色输出的主要内容,如果未能解决你的问题,请参考以下文章
在 node.js 中运行 exec 时出现 error.code 139
为啥我的 exec 命令失败但如果命令在终端中传递则可以工作?