繁体   English   中英

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

[英]Output of C++ function system(command) does not show color in Linux terminal

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

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

谢谢!

这里没有颜色的答案就在于此

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");

你可以跑

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

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

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

您可能应该阅读高级Linux编程

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

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

在你的程序中使用“ls --color”应该可行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM