C ++函数系统(命令)的输出在Linux终端中不显示颜色

时间:2013-11-30 07:56:02

标签: c++ linux terminal stdout

当我在Linux终端中直接运行命令时,说“ls”,输出是带颜色的。但是,当我运行一个调用system(“ls”)的C ++程序时,输出没有颜色。

有没有办法让后一种方法也能显示彩色输出?

谢谢!

4 个答案:

答案 0 :(得分:5)

为什么没有颜色的答案在于here

  

system()通过调用/ bin / sh -c执行命令中指定的命令   命令,并在命令完成后返回。

sh -c忽略别名。也许某个地方你有ls表示ls --color=auto的别名。

例如,如果我sh -c 'ls',我就没有颜色。

证明:

wow ♪[01:04 AM][vnbraun@chernobyl ~]$ which ls
alias ls='ls --color=auto'
        /bin/ls
wow ♪[01:08 AM][vnbraun@chernobyl ~]$ sh -c 'which ls'
/bin/ls

因此,您可以尝试system("ls --color=auto");

答案 1 :(得分:4)

你可以运行

 system("/bin/ls --color=auto");

但我认为你不应该从你的C ++程序中运行ls。也许您想要使用 - readdir(3)stat(2)nftw(3)glob(3)wordexp(3)等的某些组合......

我不认为分支运行/bin/ls的shell在C ++程序中是有用的。有更简单的方法来实现你的目标(我无法猜测)。

您可能应该阅读Advanced Linux Programming

答案 2 :(得分:1)

尝试调用ls --color=autols --color=always以显示带有颜色的ls

答案 3 :(得分:1)

这可能是由于系统中某处的bash配置文件别名“ls”到“ls --color”。

在程序中使用“ls --color”应该可以正常工作。